Udostępnij za pośrednictwem


Kompilator ostrzeżenia (poziom 3) C4686

"Typ danych zdefiniowany przez użytkownika": możliwe zmiany w zachowaniu, zmiana UDT zwrotu konwencji wywoływania

Specjalizacji szablon klasy nie jest zdefiniowany, 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ą również opcje.

To ostrzeżenie jest wynikiem pracy, aby Visual C++.NET 2003 kompilator zgodne ze standardem ISO C++.

To ostrzeżenie jest domyślnie wyłączona.Zobacz Kompilator ostrzeżenia że są wyłączone domyślnie Aby uzyskać więcej informacji.

Zamiast tego spróbuj następujących

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