class Test
{
;
int x;
};
这完全合法且可移植吗?
从我对标准的阅读来看,这是不允许的。
如果只看语法定义,似乎是允许的。相关部分是:
成员规范出现在类声明中
{ ... }
之间。
成员规范是一系列成员声明和访问说明符。 成员声明的一种可能形式是:
属性说明符序列opt decl-说明符序列opt 成员声明符列表opt;
由于分号之前的所有内容都是可选的,因此看起来允许有一个空 成员声明,仅由分号组成。
但是,9.2/1 说:
除非用于声明友元 (11.3) 或将基类成员的名称引入派生类 (7.3.3),成员声明声明类的成员,并且 每个此类成员声明都应声明至少有一个班级成员姓名。
由于空成员声明未声明类的至少一个成员,因此即使某些编译器接受它,这似乎也不符合标准。