Błąd kompilatora C2477

"składowa": nie można zainicjować składowej danych statycznych za pośrednictwem klasy pochodnej

Statyczny element członkowski danych klasy szablonu został zainicjowany niepoprawnie. Jest to zmiana powodująca niezgodność w wersjach kompilatora Microsoft C++ przed programem Visual Studio .NET 2003 w celu zachowania zgodności ze standardem ISO C++.

Poniższy przykład generuje kod 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;