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

And*_*zos 5 c++ c++11

假设我有一个T型:

typedef ... T;
Run Code Online (Sandbox Code Playgroud)

然后我有这些功能:

T f11();
T& f12();
T&& f13();
const T f21();
const T& f22();
const T&& f23();
Run Code Online (Sandbox Code Playgroud)

然后像这样调用它们:

auto x11 = f11();
auto x12 = f12();
auto x13 = f13();
auto x21 = f21();
auto x22 = f22();
auto x23 = f23();
Run Code Online (Sandbox Code Playgroud)

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

jua*_*nza 5

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

从标准中引用相关示例:

const auto &i = expr;

类型if(expr)在以下发明的函数模板的调用中推导出的参数X的类型:

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

因此,在你的例子,所有变量的类型x11x23推导出的T.

  • 特别是,这意味着每个推导变量的类型将是"T". (2认同)
  • 也许你应该写`template <class AUTO>`来说明问题...... :-) (2认同)