我认为这是C ++ 11标准中的(次要)缺陷

时间:2014-11-22 19:09:14

标签: c++ c++11 language-lawyer

我认为这是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)之后出现一个声明符列表。

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