我认为这是 C++11 标准中的一个(小)缺陷

I believe this to be a (minor) defect in the C++11 Standard

本文关键字:一个 缺陷 标准 C++11      更新时间:2023-10-16

我认为这是C++11标准中的一个(小)缺陷。在 [dcl.dcl] 中,我们有:

简单声明

decl-specifier-seq opt init-declarator-listopt;

decl-specifier-seq 不能是可选的。

例如,下面的代码段无法编译:

x;

如果我在这里是对的,那么第 §8.3/1 段的开头也应该改变:

从:

声明符列表显示在可选项之后(第 7 条)decl-specifier-seq (7.1).

自:

声明符列表显示在 decl-specifier-seq (7.1) 之后。

太长,无法发表评论

在第7条第3款中:

简单声明中,可选的初始化声明符列表可以是 仅在声明类(条款 9)或枚举 (7.2) 时省略, 也就是说,当 decl-specifier-seq 包含 类说明符,带有类键 (9.1) 的复杂类型说明符, 或枚举说明符在这些情况下,每当类说明符枚举说明符存在于 decl-specifier-seq 中,标识符 在这些说明符中,由 声明(作为名、枚举枚举器,具体取决于 语法)。在这种情况下,除了声明 未命名的位字段 (9.6),decl-specifier-seq 应引入一个或 更多名称进入程序,或应重新声明由一个引入的名称 以前的声明。

在第7条第9款中

仅在构造函数、析构函数和类型的函数声明中 转换可以省略 decl-说明符-seq