Compiler Error C2691

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Compiler Error C2691.

data type' : a managed or WinRTarray cannot have this element type

The type of a managed or WinRT array element can be a value type or a reference type.

The following sample generates C2691:

// C2691a.cpp  
// compile with: /clr  
class A {};  
  
int main() {  
   array<A>^ a1 = gcnew array<A>(20);   // C2691  
   array<int>^ a2 = gcnew array<int>(20);   // value type OK  
}  

The following sample generates C2691:

// C2691b.cpp  
// compile with: /clr:oldSyntax  
#using <mscorlib.dll>  
int main() {  
   int * a1 __gc[];   // C2691  
   int * a1 = new int [20];   // OK  
}  

C2691 can also occur if you attempt to define a jagged array using Managed Extensions for C++. Jagged arrays are supported in the current syntax, see Arrays for more information.

The following sample generates C2691:

// C2691c.cpp  
// compile with: /clr:oldSyntax  
#using <mscorlib.dll>  
using namespace System;  
int main() {  
   Int32 myJaggedArray[][] = new Int32 [50][];   // C2691  
}  

Show: