Advertencia del compilador (nivel 3) C4686
'tipo definido por el usuario': posible cambio de comportamiento, cambio en la convención de llamada devuelta definida por el usuario
No se ha definido una especialización de plantilla de clase antes de su utilización en un tipo de valor devuelto. Nada que crea instancias de la clase resolverá C4686; declarar una instancia de o el acceso a un miembro (<>Cint::anything) es también opciones.
Esta advertencia es el resultado del trabajo realizado para que el compilador de Visual C++ .NET 2003 cumpla el estándar ISO C++.
De forma predeterminada, esta advertencia está desactivada. Para obtener más información, vea Advertencias del compilador desactivadas de forma predeterminada.
En su lugar, pruebe lo siguiente:
// 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>();
}