【发布时间】:2011-07-19 12:48:13
【问题描述】:
这个问题是由于无法将统一初始化语法与auto 关键字一起使用,因为它将其视为std::initializer_list<T>(cmets 中的解释here)。
以下面的代码为例:
class X { };
int x( X() ); // function prototype (1)
auto x( X() ); // copy/move construction of an X, function prototype or compile-time error?
编译器对auto x做了什么?
对每种可能性进行推理:
复制/移动构造:我认为这是正确的行为,因为 (1) 被视为一种缺陷。
函数原型:似乎不太可能,因为没有尾随返回类型。
编译时错误:如果编译器确实将其解析为函数原型,则可能由于缺少尾随返回类型而导致编译时错误。
C++0x 标准规定这应该被解释为什么?
【问题讨论】:
标签: c++ function c++11 type-inference