在 C++11 中,我声明了以下联合:
union U4 {
char c;
int i;
static int si;
};
当我使用 g++ 4.7.0 使用 -std=c++11 -pedantic-errors 编译此代码时,我收到以下错误(经过少量编辑):
错误:本地类“联合 U4”不应具有静态数据成员“int U4::si”[-fpermissive]
错误:“U4::si”可能不是静态的,因为它是联合的成员
据我所知,FDIS (N3242) 没有明确允许命名联合的静态数据成员。但我也没有看到 FDIS 在哪里不允许命名联合的静态数据成员 FDIS 确实反复提到可以用“非静态数据成员”[第 9.5 节第 1 段]做什么。相比之下,这表明该标准允许联合的静态数据成员。
我对联合的静态数据成员没有任何用处。如果我需要它,我可能会通过包含匿名联合的类获得足够接近的效果。我只是想了解标准的意图。
谢谢您的帮助。