Error del compilador C2382
'función': nueva definición; especificaciones de excepción diferentes
Este error indica que se ha intentado una sobrecarga de la función solo en la especificación de excepción.
Comentarios
De forma predeterminada, el compilador considera que una especificación noexcept
es equivalente a una especificación throw()
o throw(some_type)
. En /Za
, esta comprobación es más estricta.
Para resolver este problema, cambie todas las declaraciones y definiciones de función (o la sobrecarga de función específica) para usar la misma especificación de excepción.
Ejemplo
El ejemplo siguiente genera la advertencia C2382:
// C2382.cpp
// compile with: /Za /c
void f1(void) noexcept {}
void f1(void) {} // C2382
void f2(void) throw() {} // OK