C++ · Intermediário · Inglês · Técnico
std optional
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