Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Fehlermeldung
'Bezeichner' : Ungültiger Typ für den Nichttyp-Vorlagenparameter 'Parameter'
'identifier' : illegal type for non-type template parameter 'parameter'
Eine Vorlage kann nicht mit einem Struktur- oder Unionargument deklariert werden. Verwenden Sie Zeiger, um Strukturen und Unions als Vorlagenparameter zu übergeben.
Im folgenden Beispiel wird C2993 generiert:
// C2993.cpp
// compile with: /c
// C2993 expected
struct MyStruct {
int a;char b;
};
template <class T, struct MyStruct S> // C2993
// try the following line instead
// template <class T, struct MyStruct * S>
class CMyClass {};
Dieser Fehler wird auch aufgrund einer Verbesserung der Compilerkonformität in Visual Studio .NET 2003 ausgegeben: Nichttyp-Vorlagenparameter in Form von Gleitkommaparametern sind nicht mehr zulässig. Nichttyp-Vorlagenparameter in Form von Gleitkommaparametern sind gemäß C++-Standard nicht zulässig.
Im Falle einer Funktionsvorlage verwenden Sie ein Funktionsargument, um den Gleitkomma-Vorlagenparameter, der kein Typ ist, zu übergeben (dieser Code ist sowohl in der Visual Studio .NET 2003-Version als auch in der Visual Studio .NET-Version von Visual C++ zulässig). Im Falle von Klassenvorlagen gibt es keine einfache Problemumgehung.
Weitere Informationen finden Sie unter Übersicht über die wichtigsten Änderungen bei der Kompilierzeit.
// C2993b.cpp
// compile with: /c
template<class T, float f> void func(T) {} // C2993
// OK
template<class T> void func2(T, float) {}