Ostrzeżenie kompilatora (poziom 3) C4686
"Typ zdefiniowany przez użytkownika': możliwe zmiany w zachowaniu, zmiana w UDT powrócić konwencji wywoływania
Specjalizacja szablonu klasy nie jest zdefiniowana, zanim został użyty typ zwracany.Wszystko, co tworzy wystąpienie klasy rozwiąże C4686; deklarowanie instancji lub uzyskiwania dostępu do członka (C<int>:: NIC) są także opcje.
To ostrzeżenie jest wynikiem pracy, aby kompilator Visual C++ .NET 2003 są zgodne z ISO C++ standard.
To ostrzeżenie jest domyślnie wyłączona.Zobacz Kompilator ostrzeżenia czy są wyłączone domyślnie uzyskać więcej informacji.
Zamiast tego spróbuj następujących rozwiązań
// 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>();
}