Namespaces
Variants

std::optional<T>:: value

From cppreference.net
Utilities library
constexpr T & value ( ) & ;
constexpr const T & value ( ) const & ;
(1) (desde C++17)
constexpr T && value ( ) && ;
constexpr const T && value ( ) const && ;
(2) (desde C++17)

Si * this contiene un valor, devuelve una referencia al valor contenido.

De lo contrario, lanza una excepción std::bad_optional_access .

Contenidos

Parámetros

(ninguno)

Valor de retorno

Una referencia al valor contenido.

Excepciones

std::bad_optional_access si * this no contiene un valor.

Notas

El operador de desreferencia operator*() no verifica si este opcional contiene un valor, lo cual puede ser más eficiente que value() .

Ejemplo

#include <iostream>
#include <optional>
int main()
{
    std::optional<int> opt = {};
    try
    {
        [[maybe_unused]] int n = opt.value();
    {
    catch(const std::bad_optional_access& e)
    {
        std::cout << e.what() << '\n';
    }
    try
    {
        opt.value() = 42;
    }
    catch(const std::bad_optional_access& e)
    {
        std::cout << e.what() << '\n';
    }
    opt = 43;
    std::cout << *opt << '\n';
    opt.value() = 44;
    std::cout << opt.value() << '\n';
}

Salida:

bad optional access
bad optional access
43
44

Véase también

devuelve el valor contenido si está disponible, otro valor en caso contrario
(función miembro pública)
accede al valor contenido
(función miembro pública)
excepción que indica acceso verificado a un optional que no contiene un valor
(clase)