编译器错误 C2944

“class”:type-class-id 重新定义为模板的值参数

无法使用泛型类或模板类,而是改用符号作为模板值参数。

此错误在 Visual Studio 2022 及更高版本中已过时。

以下示例生成 C2944:

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

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

template <class T > struct X2 {};

使用泛型时,也可能出现 C2944:

// 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