以下代码可以用clang很好地编译。我想知道 C++ 标准是否可以接受。
class A {
static void x; // #1
static const void x; // #2
static volatile void x; // #3
};
在我看来,没有任何声明是有效的。perenial C++ 标准验证套件 有这样一个测试(#1),而 clang(v3.4)在这方面失败了。
虽然,如果我从 #1 中删除静态,那么 clang 会按预期报告错误。
我查看了标准,发现有一段关于静态数据成员(9.4.2-2)的内容是:
2 静态数据成员在其类定义中的声明不是定义,并且可能是除 cv 限定的 void 之外的不完整类型。...
据我了解,这条线将 #2 和 #3 视为无效但不确定 #1。是否有更多与静态存储类声明相关的细节应该排除#1?
谢谢,