Error del compilador C2942
"class": type-class-id redefinido como argumento formal de una función
No puede usar una clase genérica o de plantilla como argumento formal. No se puede pasar un argumento directamente al constructor de una clase genérica o clase de plantilla.
Este error está obsoleto en Visual Studio 2022 y versiones posteriores.
El ejemplo siguiente genera la advertencia C2942:
// C2942.cpp
// compile with: /c
template<class T>
struct TC {};
void f(int TC<int>) {} // C2942
// OK
struct TC2 {};
void f(TC2 i) {}
También se puede producir el error C2942 al usar genéricos:
// C2942b.cpp
// compile with: /clr /c
generic<class T>
ref struct GC {};
void f(int GC<int>) {} // C2942
ref struct GC2 { };
void f(int GC2) {}