来自维基百科
auto
如果不是自动类型推导,在这种情况下(下)关键字的用途是什么?struct SomeStruct { auto func_name(int x, int y) -> int; }; auto SomeStruct::func_name(int x, int y) -> int {return x + y; }
在哪些情况下需要明确具有类型?
问问题
587 次
1 回答
10
这是尾随返回类型。auto
只是一个占位符,表示返回类型稍后出现。
这样做的原因是参数名称可以用于计算返回类型:
template<typename L, typename R>
auto add(L l, R r) -> decltype(l+r) { return l+r; }
替代方案是:
template<typename L, typename R>
decltype(std::declval<L>()+std::declval<R>())
add(L l, R r)
{ return l+r; }
该语言的未来添加可能是允许省略尾随返回类型,而是使用 lambdas 允许的自动类型推导。
template<typename L, typename R>
auto add(L l, R r) { return l+r; }
于 2013-03-19T20:49:43.830 回答