使用“auto”键入推理

时间:2013-03-19 20:48:00

标签: c++ c++11 type-inference

  1. 来自Wikipedia

    关键字 auto 的用途是什么? 在这种情况下(如下),如果不是自动类型扣除?

    struct SomeStruct {
        auto func_name(int x, int y) -> int;
    };
    
    auto SomeStruct::func_name(int x, int y) -> int {return x + y; }
    
  2. 明确哪些类型需要哪些情况?

1 个答案:

答案 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; }