次のコードは、clang で正常にコンパイルされます。C++ 標準がこれで問題ないかどうか知りたかったのです。
class A {
static void x; // #1
static const void x; // #2
static volatile void x; // #3
};
私の意見では、どの宣言も有効ではありません。永続的な C++ 標準検証スイートには、その ようなテスト (#1) があり、clang (v3.4) はそのテストで失敗します。
ただし、#1から静的を削除すると、clangは予想どおりエラーを報告します。
標準を調べたところ、静的データ メンバーに関する 1 つの段落 (9.4.2-2) が見つかりました。
2 クラス定義内の静的データ メンバーの宣言は定義ではなく、cv 修飾された void 以外の不完全な型である可能性があります。...
私が理解しているように、この行は #2 と #3 を無効として失格としていますが、#1 については不明です。#1を除外する必要がある静的ストレージクラスの宣言に関連する詳細はありますか?
ありがとう、