N4791 - 2018-12-07 (这与basic.start.Static/2的现行草案中的措辞相吻合)
如果具有静态或线程存储持续时间的变量或临时对象被实体的常量初始化器(7.7)初始化,则执行常量初始化。如果不执行常量初始化,则具有静态存储持续时间(6.6.4.1)或线程存储持续时间(6.6.4.2)的变量为零初始化(9.3)。零初始化和常量初始化一起被称为静态初始化;所有其他初始化都是动态初始化.所有静态初始化都强烈地发生在(6.8.2.1)任何动态初始化之前。注:非局部变量的动态初始化在6.8.3.3中描述,局部变量的初始化在8.7中描述。-尾注
N4778 - 2018-10-08 (这是N4791前面的草稿)
变量或临时对象o的常量初始化器是其全部表达式为常量表达式的初始化器,但如果o是对象,则即使这些对象是非文字类类型的对象,此类初始化器也可以为o及其子对象调用constexpr构造函数。注意:这样的类可能有一个非平凡的析构函数。-如果具有静态或线程存储持续时间的变量或临时对象被实体的常量初始化器初始化,则执行尾注常量初始化。如果不执行常量初始化,则具有静态存储持续时间(6.6.4.1)或线程存储持续时间(6.6.4.2)的变量为零初始化(9.3)。零初始化和常量初始化一起被称为静态初始化;所有其他初始化都是动态初始化.所有静态初始化都强烈地发生在(6.8.2.1)任何动态初始化之前。注:非局部变量的动态初始化在6.8.3.3中描述,局部变量的初始化在8.7中描述。-尾注
发布于 2019-06-28 17:11:12
将答案从注释中移除,使此问题从未回答的问题列表中消失:相关的拉请求是http://github.com/cplusplus/draft/pull/2442
https://stackoverflow.com/questions/55839117
复制相似问题