noexcept (false): Alguma flag no g++ para gerar alerta nessa situação? [RESOLVIDO]

1. noexcept (false): Alguma flag no g++ para gerar alerta nessa situação? [RESOLVIDO]

M.
XProtoman

(usa Fedora)

Enviado em 08/09/2016 - 13:57h

Boa tarde a todos,

Segue o código:
#include <stdexcept>

void a1() noexcept (false)
{
throw std::exception();
}

void a2() noexcept (true)
{
a1();
}

int main()
{
return 0;
}


Não sei se esse recurso está presente, mas gostaria que o g++ alertasse sobre a função a2, ela chama a1 e esta pode disparar uma exceção, logo a2 deveria ser noexcept (false) também, gostaria de ter algum alerta sobre isso.

Obrigado.


  


2. MELHOR RESPOSTA

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 08/09/2016 - 15:06h

Não existe flag para isso, (gcc-6.1 clang-3.8), e nem deveria.

A condição de lançar exceção numa noexcept(false) é válida.
O compilador tem a chance aplicar otimização, pois ao ser lançado a exceção não precisa desenrolar a pilha e chama o std::terminate imediatamente.
Pense numa condição de erro que ao ocorrer um exceção fatal, você queira matar o processo naquele momento.

Outra coisa, noexcept é equivalente a noexcept(true), o compilador adiciona essa condição a todas funções (com exceção do destrutor que é noexcept(false), então não precisa adicionar o (true).

Se quiseres forçar o nível de warnings, sugiro usar a flag -Weverything do Clang.

--
Uilian Ries
Linux Counter: 521986





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts