-1
4

2 回答 2

2

当您尝试从相同类型的东西初始化聚合时,列表初始化并不完全有效。

这是CWG 1467,其决议(除其他事项外)在[dcl.init.list]/3中的巨型列表中引入了另一个项目符号来完成这项工作:

类型的对象或引用的列表初始化T定义如下:

  • 如果T是一个类类型并且初始化器列表有一个类型为cv U的元素,其中UisT或派生自 的类T,则从该元素初始化对象(通过复制列表初始化的复制初始化,或通过直接初始化直接列表初始化)。
于 2016-03-22T19:07:01.287 回答
-1

当重载构造函数被解析时,大括号初始化将匹配使用 std::initializer_list 参数的构造函数,然后再考虑其他重载构造函数。所以

bar c{b};

将匹配采用 std::initializer_list 的构造函数,而不是生成的复制构造函数。

这在第 7 项中讨论:创建 Scott Meyers 的对象时区分 () 和 {} - 有效的现代 C++。

此外,维基百科 - C++11 统一初始化

于 2016-03-22T12:02:28.290 回答