Compiler Error C3816

'declaration' was previously declared or defined with a different managed modifier

A forward declaration and an actual declaration require that there be no conflicts or inconsistencies in the declaration of attributes.

The following sample generates C3816:

// C3816a.cpp
// compile with: /clr /c
class C1;
// try the following line instead
// ref class C1;

ref class C1{  // C3816, forward declaration does not use ref
};

The following sample generates C3816:

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

class C1;

// try the following line to resolve the error
// __gc class C1;

__gc class C1{  // C3816, forward declaration does not use __gc
};