Compilerwarnung (Ebene 3) C4686

"benutzerdefinierter Typ" : mögliche Verhaltensänderung, Änderung der UDT-Rückgabeaufrufkonvention

Hinweise

Eine Klassenvorlagenspezialisierung wurde nicht definiert, bevor sie in einem Rückgabetyp verwendet wurde. Alles, was die Klasse instanziiert, löst C4686; Das Deklarieren einer Instanz oder des Zugriffs auf ein Element (z. B C<int>::some_member. ) sind auch Optionen.

Diese Warnung ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Compilerwarnungen, die standardmäßig deaktiviert sind.

Beispiel

Versuchen Sie es stattdessen:

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