Compiler Error C2726

'gcnew' may only be used to create an object with managed type

You cannot create an instance of a native type on the garbage-collected heap.

The following sample generates C2726:

// C2726.cpp
// compile with: /clr
using namespace System;
class U {};
ref class V {};
value class W {};

int main() {
   U* pU = gcnew U;    // C2726
   U* pU2 = new U;   // OK
   V^ p2 = gcnew V;   // OK
   W p3;   // OK

}

The following sample generates C2726:

// C2726b.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;

class U {};
__gc class V {};

int main() {
   U* pU = __gc new U;    // C2726
   U* pU2 = new U;
   V* p2 = __gc new V;
}