C++ · Intermediário · Inglês · Técnico
nodiscard
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ícitoExemplos
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.