C ++ 11:对const和引用类型的`auto`动作的标准引用

时间:2012-09-03 05:31:43

标签: c++ c++11

假设我有一个类型T:

typedef ... T;

然后我有这些功能:

T f11();
T& f12();
T&& f13();
const T f21();
const T& f22();
const T&& f23();

然后像这样打电话给他们:

auto x11 = f11();
auto x12 = f12();
auto x13 = f13();
auto x21 = f21();
auto x22 = f22();
auto x23 = f23();

从哪个C ++ 11标准的section /子句可以推导出x11..x23的等效非自动声明?

1 个答案:

答案 0 :(得分:5)

在§7.1.6.4自动说明符中。在函数返回类型的示例中,模板参数推导的规则适用。

从标准中引用相关示例:

  

const auto &i = expr;

     

i的类型是以下发明的函数模板的调用f(expr)中参数X的推导类型:

     

template <class AUTO> void f(const AUTO& X);

因此,在您的示例中,所有变量x11x23的类型都推导为T