Compiler Error C3836

static constructor is not allowed to have a member initializer list

A managed class cannot have a static constructor that also has a member initialization list. Static class constructors are called by the common language runtime to do class initialization, initializing static data members.

The following sample generates C3836:

// C3836a.cpp
// compile with: /clr
ref class M
{
   static int s_i;

public:
   static M() :  s_i(1234)   // C3836, delete initializer to resolve
   {
   }
};

int main()
{
}

The following sample generates C3836:

// C3836b.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>

__gc class M
{
   static int s_i;

public:
   static M() :  s_i(1234)   // C3836, delete initializer to resolve
   {
   }
};

int main()
{
}