Partilhar via


Aviso do compilador (nível 3) C4686

'user-defined type' : possible change in behavior, change in UDT return calling convention

Uma classe a especialização de modelo que não foi definida antes que esteve usada em um tipo de retorno. Qualquer coisa que cria uma instância da classe C4686; resolverá declarar uma instância ou acessar um membro (<>Cint::anything) também são opções.

Esse aviso é o resultado do trabalho para fazer o compilador do Visual C++ .NET 2003 estar em conformidade com o padrão ISO C++.

Esse aviso é desativada por padrão. Consulte Avisos do compilador que estão por padrão para obter mais informações.

Tente o seguinte,

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