編譯器錯誤 C2477

'member' :靜態資料成員無法透過衍生類別初始化

範本類別的靜態資料成員初始化不正確。 這是 Visual Studio .NET 2003 之前 Microsoft C++ 編譯器版本的重大變更,以符合 ISO 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;