C4686 de aviso (nível 3) do compilador
'tipo definido pelo usuário': possível alteração no comportamento, a alteração no UDT retornar a convenção de chamada
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>();
}