Compiler Error C2477


For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

'member' : static data member cannot be initialized via derived class

A static data member of a template class was initialized incorrectly. This is a breaking change with versions of the Visual C++ compiler prior to Visual Studio .NET 2003, in order to conform to the ISO C++ standard.

The following sample generates 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  
int S<X>::n = 0;