Compiler Error C2696


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

Cannot create a temporary object of a managed type 'type'

References to const in an unmanaged program cause the compiler to call the constructor and create a temporary object on the stack. However, a managed class can never be created on the stack.

C2696 is only reachable using /clr:oldSyntax.

The following sample generates C2696:

// C2696b.cpp  
// compile with: /clr:oldSyntax  
__gc class G {  
   G( int i ) {}  
void func( const G& g );  
int main() {  
   func( 1 );   // C2696  
   G *myG = new G( 1 );   // OK  
   func( *myG );