C++ 11支持新的函数语法:
auto func_name(int x, int y) -> int;
Run Code Online (Sandbox Code Playgroud)
目前此函数将声明为:
int func_name(int x, int y);
Run Code Online (Sandbox Code Playgroud)
新风格似乎还没有被广泛采用(比如在gcc stl中)
但是,这种新风格是否应该在新的C++ 11程序中随处可见,还是仅在需要时使用?
就个人而言,我更喜欢旧款式,但是混合风格的代码库看起来很丑陋.
是否有区别:
template <class T>
constexpr decltype(auto) f(T&& x) -> decltype(std::get<0>(std::forward<T>(x)))
{
return std::get<0>(std::forward<T>(x));
}
Run Code Online (Sandbox Code Playgroud)
和:
template <class T>
constexpr auto f(T&& x) -> decltype(std::get<0>(std::forward<T>(x)))
{
return std::get<0>(std::forward<T>(x));
}
Run Code Online (Sandbox Code Playgroud)
如果是的话,它是什么,我应该使用哪一个来完美转发?