【发布时间】:2014-03-16 13:31:06
【问题描述】:
除了支持多个参数、不允许窄化转换、匹配构造函数采用 std::initializer_list 参数之外,复制列表初始化与传统复制初始化还有什么不同?
具体来说,假设有两种用户定义类型,A 和B:
class A {...};
class B {...};
B b;
A a1 = {b};
A a2 = b;
A 和 B 的哪种定义会对这两种初始化形式产生影响?例如A 和 B 是否存在某种定义,这将使初始化中的一个合法但另一个非法,或者两者都合法但语义不同,或者两者都非法但原因不同?
(假设 A 没有采用 std::initializer_list 参数的构造函数。)
编辑:添加一个链接到我的一个有点相关的问题:What is the supposed behavior of copy-list-initialization in the case of an initializer with a conversion operator?
【问题讨论】: