ExpertiDict

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

std optional

ˌɛs.tiː.ˈdiː ˈɑːp.ʃə.nəlsubstantivo

Tipo do C++17 que guarda um valor ou nada, indicando ausência sem recorrer a ponteiro nulo ou valor mágico. Consulta-se com has_value, value ou o operador *.

Onde usar

Usado em retornos de busca e em parâmetros opcionais, no lugar de -1 ou nullptr. Deixa claro no contrato que o resultado pode não existir.

Em código

std::optional<int> achar(int x) {
  if (x > 0) return x;
  return std::nullopt;
}
if (auto r = achar(5)) std::cout << *r;

Exemplos

Return a std optional instead of a magic -1.

Retorne um std optional em vez de um -1 mágico.

Check has value before dereferencing the optional.

Confira has_value antes de desreferenciar o optional.

Cuidado

Acessar com * ou value() sem conferir é erro: * é comportamento indefinido se estiver vazio, e value() lança bad_optional_access.

Sinônimos

valor opcional

Veja também

Todos os termos de C++