struct S {
int S;
};
此代码在 C++03 及更高版本中有效,但在 C++98 中格式错误。 具体来说,[class.mem] 第 13 段禁止 all 数据成员与 C++98 中的类同名,但是这条规则被放宽,这样如果没有用户声明的构造函数,你可以有一个非-同名静态数据成员。
这背后的动机是什么? 其中涵盖哪些重要用例需要修改标准?
这是来自DR80。换句话说,
static
最初是为了与 C 一致,但在 96 年 5 月和 96 年 9 月工作文件之间,标准发生了变化,并且 static
被删除。 C++03 通过缺陷报告从语言中恢复了该错误。