我理解[dcl.init]/7 (7.1)由于DR 1630而在C ++ 14方面发生了变化。但是,C ++ 14中存在的突出显示的句子(见下文)是否应继续存在于C ++ 1z中?
[dcl.init] / 7(7.1):
C ++ 14中的如果T是(可能是cv限定的)类类型(第12条),那么构造函数 被考虑。列举了适用的构造函数(16.3.1.3), 并且初始化器()的最佳选择是通过重载来选择的 决议(16.3)。这样选择的构造函数被调用,带有 空参数列表,用于初始化对象。
[dcl.init] / 7(7.1)(重点是我的):
如果T是(可能是cv限定的)类类型(第9节),则为默认值 T的构造函数(12.1)称为(初始化为 如果T没有默认构造函数或重载决策,则格式错误 (13.3)导致歧义或被删除的函数或 从初始化的上下文中无法访问);
答案 0 :(得分:5)
...初始化程序()的最佳选择是 通过重载解析 ......
重载分辨率已经暗示了所有被删除的内容。使用旧的措辞,没有提到的限制,它可以被隐含地读取,允许调用不可访问的默认构造函数,但是使用新的措辞,通过简单地指定通常的规则适用已经很清楚。