A. *_* K. 5 c++ clang c++11 clang++
以下代码用clang编译好.我想知道C++标准是否适合这个.
class A {
static void x; // #1
static const void x; // #2
static volatile void x; // #3
};
Run Code Online (Sandbox Code Playgroud)
在我看来,没有一个声明是有效的.所述perenial C++标准验证套件 具有这样一个这样的试验(#1)和铛(V3.4)失败在于.
虽然,如果我从#1中删除静态,那么clang会按预期报告错误.
我查看了标准,并在静态数据成员(9.4.2-2)中找到了一个段落,其中说:
2在类定义中声明静态数据成员不是一个定义,除了cv-quali fi ed void之外可能是不完整的类型....
据我所知,这一行取消了#2和#3的无效,但对#1不确定.是否有更多与静态存储类声明相关的细节应该排除#1?
谢谢,
不,这是不允许的,正是因为你引用的段落.请注意,您引用的段落中的"cv-qualified"一词包括不合格.根据C++ 11标准的第3.9.3/10段:
在该标准中,符号
cv
(或cv1
,cv2
等),在类型的描述中使用,表示任意的集合CV-限定符,即之一{const
},{volatile
},{const
,volatile
},或空集.
归档时间: |
|
查看次数: |
173 次 |
最近记录: |