コンパイラ エラー C2477

'member': 静的データ メンバーは派生クラスを使って初期化できません

テンプレート クラスの静的データ メンバーが正しく初期化されませんでした。 これは、ISO C++ 標準に準拠するための、Visual Studio .NET 2003 より前のバージョンの Microsoft C++ コンパイラの破壊的変更です。

次の例では C2477 が生成されます。

// C2477.cpp
// compile with: /Za /c
template <class T>
struct S {
   static int n;
};

struct X {};
struct A: S<X> {};

int A::n = 0;   // C2477

template<>
int S<X>::n = 0;