关键字 auto
的用途是什么?
在这种情况下(如下),如果不是自动类型扣除?
struct SomeStruct {
auto func_name(int x, int y) -> int;
};
auto SomeStruct::func_name(int x, int y) -> int {return x + y; }
明确哪些类型需要哪些情况?
答案 0 :(得分: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; }