5

假设我有一个类型 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 标准的哪些部分/条款可以推导出 x11..x23 的等效非自动声明?

4

1 回答 1

5

它在 §7.1.6.4 auto specifier 中。在您的函数返回类型示例中,模板参数推导规则适用。

引用标准中的相关示例:

const auto &i = expr;

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

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

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

于 2012-09-03T05:36:54.370 回答