我认为这是C ++ 11标准中的(次要)缺陷。在[dcl.dcl]中我们有:
简单声明:
decl-specifier-seq opt init-declarator-list opt ;
decl-specifier-seq 不能是可选的。
例如下面的代码片段无法编译:
x;
如果我在这里是正确的,那么段落§8.3/ 1的开头也应该改变:
自:
可选项后出现一个声明者列表(第7条) decl-specifier-seq (7.1)。
致:
在 decl-specifier-seq (7.1)之后出现一个声明符列表。
答案 0 :(得分:11)
评论太长了
在第7条第3款中:
在简单声明中,可选的 init-declarator-list 可以是 仅在声明类(第9条)或枚举(7.2)时省略, 也就是说,当 decl-specifier-seq 包含a时 class-specifier ,带有 class-key (9.1)的详细类型说明符, 或枚举说明符。在这些情况下以及每当类说明符或 enl-specifier 出现在 decl-specifier-seq 中,标识符 在这些说明符中是由声明的名称 声明(作为类名,枚举名称或枚举器,取决于 语法)。在这种情况下,除了声明 未命名的位域(9.6), decl-specifier-seq 应引入一个或 更多名称进入程序,或重新声明由a引入的名称 先前的声明。
在第7条第9款中
仅在构造函数,析构函数和类型的函数声明中 转换可以省略 decl-specifier-seq 。