假设我有一个类型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的等效非自动声明?
答案 0 :(得分:5)
在§7.1.6.4自动说明符中。在函数返回类型的示例中,模板参数推导的规则适用。
从标准中引用相关示例:
const auto &i = expr;
i
的类型是以下发明的函数模板的调用f(expr)
中参数X的推导类型:
template <class AUTO> void f(const AUTO& X);
因此,在您的示例中,所有变量x11
到x23
的类型都推导为T
。