Compilerfehler C2974

Ungültiges Typargument 'Nummer', Typ erwartet

Das generische oder Vorlagenargument stimmt nicht mit der generischen oder Vorlagendeklaration überein.Innerhalb der spitzen Klammern sollte ein Typ stehen.Überprüfen Sie die generische bzw. die Vorlagendefinition, um die richtigen Typen zu ermitteln.

Im folgenden Beispiel wird C2974 generiert:

// C2974.cpp
// C2974 expected
template <class T>
struct TC {};

template <typename T>
void tf(T){}

int main() {
   // Delete the following 2 lines to resolve
   TC<1>* tc;
   tf<"abc">("abc");

   TC<int>* tc;
   tf<const char *>("abc");
}

C2974 kann auch auftreten, wenn Generika verwendet werden:

// C2974b.cpp
// compile with: /clr
// C2974 expected
using namespace System;
generic <class T>
ref struct GCtype {};

generic <typename T>
void gf(T){}

int main() {
   // Delete the following 2 lines to resolve
   GCtype<"a">^ gc;
   gf<"a">("abc");

   // OK
   GCtype<int>^ gc;
   gf<String ^>("abc");
}