Iは、以下の組合を宣言する:C++ 11では、非匿名の共用体に静的データ・メンバーを含めることはできますか? C++ 11では
union U4 {
char c;
int i;
static int si;
};
Iは-std = C++ 11 -pedantic-エラーを使用してG ++ 4.7.0でこのコードをコンパイルするとき、私は(次のエラーを取得しますマイナー編集):
error: local class ‘union U4’ shall not have static data member ‘int U4::si’ [-fpermissive]
error: ‘U4::si’ may not be static because it is a member of a union
FDIS(N3242)は、明示的には、私の知る限り、名前の組合の静的データメンバを許可していません。しかし、私はFDIS がどこで許可されていないかもわかりません名前付き共用体の静的データメンバーどちらかを "静的でないデータメンバー" [セクション9.5パラグラフ1]で何ができるかを繰り返し参照します。これとは対照的に、この標準では、組合の静的データメンバーが許可されていることが示されています。
私は、組合の静的データメンバーには何の注意もありません。私がそれを必要とするならば、おそらく匿名組合を含むクラスで十分に近い効果を得ることができます。私は標準の意図を理解しようとしています。
ありがとうございました。
まず、ローカルクラスの型は静的なデータメンバ(一般的には '§9.4.2/ 5')を持つことができないので、最初のエラーがどこから来るのでしょうか。非局所的な 'union'内の静的データメンバーの場合、Clangはうまくコンパイルされます。 – Xeo