Advertencia del compilador (nivel 3) C4686
"user-defined type": posible cambio de comportamiento; cambio en la convención de llamada para el valor devuelto de tipo definido por el usuario
Comentarios
No se definió una especialización de plantilla de clase antes de que usarla en un tipo de valor devuelto. Todo lo que crea instancias de la clase resuelve la advertencia C4686; también es opción declarar una instancia o acceder a un miembro (por ejemplo, C<int>::some_member
).
De forma predeterminada, esta advertencia está desactivada. Para más información, consulte Advertencias del compilador desactivadas de manera predeterminada.
Ejemplo
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>();
}