Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
„function“: Ungültiges Typargument für „param“, fehlende Typargumentliste für Klassentyp „typename“
Bemerkungen
Eine Funktionsvorlage wird als Vorlagentypargument definiert. Übergeben wurde aber ein template-Vorlagenargument.
Examples
Im folgenden Beispiel wird C3206 generiert:
// C3206.cpp
template <class T>
void f() {}
template <class T>
struct S {};
void f1() {
f<S>(); // C3206
// try the following line instead
// f<S<int> >();
}
Mögliche Lösung:
// C3206b.cpp
// compile with: /c
template <class T>
void f() {}
template <class T>
struct S {};
void f1() {
f<S<int> >();
}
C3206 kann auch auftreten, wenn Generics verwendet werden:
// C3206c.cpp
// compile with: /clr
generic <class GT1>
void gf() {}
generic <class T>
value struct GS {};
int main() {
gf<GS>(); // C3206
}
Mögliche Lösung:
// C3206d.cpp
// compile with: /clr
generic <class GT1>
void gf() {}
generic <class T>
value struct GS {};
int main() {
gf<GS<int> >();
}
Eine Klassenvorlage ist nicht als template-Typargument zulässig. Im folgenden Beispiel tritt C3206 auf:
// C3206e.cpp
template <class T>
struct S {};
template <class T>
void func() { // takes a type
T<int> t;
}
int main() {
func<S>(); // C3206 S is not a type.
}
Mögliche Lösung:
// C3206f.cpp
template <class T>
struct S {};
template <class T>
void func() { // takes a type
T t;
}
int main() {
func<S<int> >();
}
Wenn ein Vorlagenvorlagenparameter erforderlich ist, müssen Sie die Funktion in einer Vorlagenklasse umschließen, die einen Vorlagenvorlagenparameter verwendet:
// C3206g.cpp
template <class T>
struct S {};
template<template<class> class TT>
struct X {
static void func() {
TT<int> t1;
TT<char> t2;
}
};
int main() {
X<S>::func();
}