这个陈述在C ++标准的7.1.6.1/1中的相关性是什么?

时间:2015-01-04 18:31:17

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

7.1.6.1/1包含以下声明(强调我的):

  

有两个 cv-qualifiers ,const和volatile。 如果是 cv-qualifier   出现在 decl-specifier-seq init-declarator-list 中   声明不得为空

以上粗体语句的相关性是什么?换句话说,是否可以在 decl-specifier-seq 中生成 cv-unqualified 类型的示例,其中 init-declarator-list声明的是空的吗?

1 个答案:

答案 0 :(得分:11)

当然,大多数类和枚举定义都使用它:

struct A { }; // valid
const struct B { }; // invalid, const would have no meaning
const struct C { } c { }; // valid

没有别的。 init-declarator-list仅用于简单声明,为此,标准(C ++ 11)声明:

  

7声明[dcl.dcl]

     

3在 simple-declaration 中,只有在声明一个类(第9节)或枚举(7.2)时,才能省略可选的 init-declarator-list ,是,当 decl-specifier-seq 包含类说明符时,详细说明类型说明符包含类 - key (9.1),或枚举说明符