ExpertiDict

C++ · Intermediário · Inglês · Técnico

noexcept

noʊ ɪkˈsɛptpalavra-chave

Especificador que promete que a função não lança exceções. Permite otimizações e, principalmente, faz contêineres como vector preferirem mover a copiar elementos ao realocar.

Onde usar

Marcar construtores e atribuições de movimento como noexcept é um pedido frequente em code review. Se uma função noexcept lançar mesmo assim, o programa chama std::terminate.

Em código

struct Item {
  Item(Item&& o) noexcept
    : dados(std::move(o.dados)) {}
  std::vector<int> dados;
};

Exemplos

Mark the move constructor noexcept so vector can use it during growth.

Marque o construtor de movimento como noexcept para o vector usá-lo ao crescer.

If a noexcept function throws, the program calls terminate.

Se uma função noexcept lança, o programa chama terminate.

Cuidado

noexcept não é checado em tempo de compilação: a promessa quebrada só aparece em execução.

Veja também

Todos os termos de C++