【发布时间】:2017-06-30 19:38:16
【问题描述】:
我了解[dcl.init]/7 (7.1) 因DR 1630 而相对于 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) in C++14(重点是我的):
如果 T 是(可能是 cv 限定的)类类型(第 9 条),则默认 T 的构造函数(12.1)被称为 (初始化是 如果 T 没有默认构造函数或重载决议,则格式错误 (13.3) 导致歧义或功能被删除或 无法从初始化的上下文中访问);
【问题讨论】:
-
为什么要存在? DR 从段落中删除了该语言。
标签: c++ initialization c++14 language-lawyer c++17