ExpertiDict

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

nodiscard

noʊ dɪˈskɑːɹdatributo

Atributo do C++17, escrito [[nodiscard]], que faz o compilador avisar quando o valor de retorno de uma função é ignorado. Pode ser aplicado a funções e a tipos.

Onde usar

Usado em funções cujo resultado indica erro ou é a única razão de chamá-las, como empty() ou alocações. Evita bugs como chamar v.empty() achando que limpa o vetor.

Em código

[[nodiscard]] int abrir(const char* p);
abrir("a.txt");  // aviso
int fd = abrir("a.txt");  // ok
(void)abrir("b.txt");  // descarte explícito

Exemplos

Mark the factory nodiscard so nobody drops the result.

Marque a fábrica como nodiscard para ninguém descartar o resultado.

The compiler warns because the nodiscard result was ignored.

O compilador avisa porque o resultado nodiscard foi ignorado.

Cuidado

É só um aviso do compilador, a menos que warnings sejam tratados como erros; para ignorar de propósito, converta o resultado para void.

Origem

Do inglês no discard, não descartar.

Veja também

Todos os termos de C++