子弹点[dcl.init]/7(7.1)

Bel*_*loc 1 c++ initialization language-lawyer c++14 c++17

据我所知,由于DR 1630,[dcl.init]/7(7.1)与C++ 14相关.但是,C++ 14中存在的突出显示的句子(见下文)是否应继续存在于C++ 1z中?

[dcl.init]/7(7.1):

如果T是(可能是cv限定的)类类型(第12条),则考虑构造函数.枚举适用的构造函数(16.3.1.3),通过重载解析(16.3)选择初始化函数()的最佳构造函数.使用空参数列表调用如此选择的构造函数来初始化对象.

[dcl.init]/7(7.1)在C++ 14中(重点是我的):

如果T是(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(12.1)(如果T没有默认构造函数或重载解析(13.3),则初始化是错误的模糊性或在初始化上下文中删除或无法访问的函数中 ;

小智 5

...并且通过重载决策选择了初始化器()的最佳选择...

重载决议已经暗示了所有被删除的内容.使用旧的措辞,没有提到的限制,它可以被隐含地读取,允许调用不可访问的默认构造函数,但是使用新的措辞,通过简单地指定通常的规则适用已经很清楚了.