在复杂的函数模板中,有时需要使用C ++ 11尾随返回类型语法才能在参数上使用decltype
,否则这些参数会过晚地进入范围:
template<typename T, typename U>
auto add(const T& a, const U& b) -> decltype(a + b)
{
return a + b;
}
从现在开始总是使用这种新语法会不会更加一致?即使是正常的功能呢?
auto main() -> int;
然后我们只需在现代代码中处理一个函数语法而不是两个函数语法,我们可以弃用旧语法,就像我们不推荐使用隐式int或隐式使用声明一样。
为了使新语法更具吸引力,我们可以用更好的名称替换auto
:
#define def auto
突然,main
的签名看起来对功能程序员非常有吸引力:
def main() -> int;
我忽略了什么吗?尾部返回类型语法是否在某种程度上低于我的想法?