Erro do compilador C2382
'function' : redefinição; especificações de exceção diferentes
Esse erro indica que uma sobrecarga de função foi tentada apenas na especificação de exceção.
Comentários
Por padrão, o compilador considera uma especificação noexcept
equivalente a uma especificação throw()
ou throw(some_type)
. Em /Za
, essa verificação é mais rigorosa.
Para resolver esse problema, altere todas as declarações e definições da função (ou a sobrecarga de função específica) para usar a mesma especificação de exceção.
Exemplo
O exemplo a seguir gera o erro C2382:
// C2382.cpp
// compile with: /Za /c
void f1(void) noexcept {}
void f1(void) {} // C2382
void f2(void) throw() {} // OK