Partilhar via


C4686 de aviso (nível 3) do compilador

'tipo definido pelo usuário' : possível alteração no comportamento, alteração no UDT convenção de chamada de retorno

Uma especialização de modelo de classe não foi definido antes que ele foi usado em um tipo de retorno. Qualquer coisa que instancia a classe resolverá C4686; declarar uma instância ou acessar um membro (C <int>:: nada) também são opções.

Esse aviso é o resultado do trabalho para tornar o Visual C++.NET 2003 compilador está de acordo com o padrão ISO C++.

Este aviso está desativado por padrão. Consulte Compilador avisos que está desativado por padrão para obter mais informações.

Tente o seguinte em vez disso,

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