是否可以在类声明中使用杂散分号

时间:2012-03-20 15:13:21

标签: c++

class Test
{
  ;
  int x;
};

这完全合法且便携吗?

1 个答案:

答案 0 :(得分:6)

从我对标准的阅读中,这是不允许的。

如果仅查看语法定义,它似乎允许它。相关部分是:

成员规范出现在类声明中的{ ... }之间。

member-specification member-declaration 和访问说明符的序列。 成员声明的一种可能形式是:

  

attribute-speci fi er-seq opt decl-speci-er-seq opt member-declarator-列表 opt ;

因为分号之前的所有内容都是可选的,所以看起来它是空的  成员声明,仅由分号组成。

然而,9.2 / 1表示:

  

除了用于声明朋友(11.3)或将基类成员的名称引入派生类(7.3.3)之外,member-declarations声明了类的成员,每个这样的成员-declaration应至少声明一个类的成员名称。

由于空成员声明没有声明至少一个类的成员,所以即使某些编译器接受它,它似乎也不符合标准。