Freigeben über


Compilerwarnung (Stufe 3) C4686

"benutzerdefinierter Typ": Mögliche Verhaltensänderung, Änderung in der UDT gibt Aufrufkonvention zurück

Die Spezialisierung einer Klassenvorlage wurde vor der Verwendung in einem Rückgabetyp nicht definiert. Alles, das die Klasse instanziiert, löst C4686 auf; eine Instanz deklarieren oder den Zugriff auf einen Member (<>Cint::anything) sind auch Optionen.

Diese Warnung resultiert aus einer Verbesserung bezüglich des Visual C++ .NET 2003-Compilers, die Konformität mit dem ISO C++-Standard gewährleisten soll.

Diese Warnung ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Standardmäßig deaktivierte Compilerwarnungen.

Gehen Sie stattdessen wie folgt vor:

// C4686.cpp
// compile with: /W3
#pragma warning (default : 4686)
template <class T>
class C;

template <class T>
C<T> f(T);

template <class T>
class C {};

int main() {
   f(1);   // C4686
}

template <class T>
C<T> f(T) {
   return C<int>();
}