这个问题是由于无法使用统一初始化语法与
看下面的代码示例:
编译器对于
每种可能性的推理: 复制/移动构造: 我看到这是一种适当的行为,因为(1)它被视为一种缺陷。 函数原型: 看起来不太可能,因为没有尾随返回类型。 编译时错误: 如果编译器将其解析为函数原型,则由于缺少尾随返回类型,可能会导致编译时错误。
C++0x标准表示应该如何解释?
auto
关键字一起使用,因为它将其视为一个 std::initializer_list<T>
(在此评论中有解释)。看下面的代码示例:
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标准表示应该如何解释?
X
构造x
,你应该说auto x((X()));
。 - Kerrek SB