Compilerwarnung (Stufe 3) C4686

Aktualisiert: November 2007

'user-defined type' : possible change in behavior, change in UDT return calling convention

'Benutzerdefinierter Typ': Mögliche Änderung im Verhalten, Änderung in UDT-Rückgabeaufrufkonvention

Die Spezialisierung einer Klassenvorlage wurde vor der Verwendung in einem Rückgabetyp nicht definiert. Sämtliche Instanziierungsversuche für die Klasse beheben den Fehler C4686. Die Deklaration einer Instanz bzw. der Memberzugriff (C<int>::anything) sind weitere Abhilfemaßnahmen.

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.

Weitere Informationen finden Sie unter Übersicht über die wichtigsten Änderungen bei der Kompilierzeit.

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>();
}