2014-06-07 51 views
8

即:创建与推导出的参数类型相同的局部变量最简单的方法是什么?

[](auto const& foo) { 
    ??? bar; // should be same base type as foo, minus const& 
} 

到目前为止,我使用的是:

typename std::remove_const<typename std::remove_reference<decltype(foo)>::type>::type combination 

但我真的希望那里有一个更简单的替代品!

+1

据我所知,我是'auto'类型演绎语义学,但在我需要使用'decltype'的地方,因为我没有分配表达式。他们介绍'decltype(auto)foo = bar'来解决逆向问题,但现在我想'decltype (bar)foo;'; – mmocny

回答

10

std::decay<decltype(whatever)>::typedecay_t如果您的std库已更新。

它模拟各种函数参数衰变。它处理如果你的参数是功能参考。在引用数组上,它也产生一个指针,这不太理想。

如果您想要以不同方式处理这些问题,您必须自行推出。

+0

+1不知道'decay'去掉了参考 – Praetorian

+0

太棒了!是的,它支持'std :: decay_t',所以更好。 – mmocny

相关问题