Compartilhar via


Erro do compilador C2944

'class': ID de classe de tipo redefinida como um argumento de valor de um modelo

Você não pode usar uma classe genérica ou de modelo, em vez de um símbolo, como um argumento de valor de modelo.

Esse erro ficou obsoleto no Visual Studio 2022 e em versões posteriores.

A amostra a seguir gera o erro C2944:

// C2944.cpp
// compile with: /c
template<class T>
class TC { };

template <int TC<int> > struct X1 { };   // C2944

template <class T > struct X2 {};

O erro C2944 também pode ocorrer ao usar genéricos:

// C2944b.cpp
// compile with: /clr /c
generic<class T>
ref class GC {};

template <int GC<int> > struct X2 { };   // C2944
template <class T> struct X3 {};   // OK