◐ Shell
clean mode source ↗

std::optional<T>::value - cppreference.com

De cppreference.com

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.

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 comprueba si este optional contiene un valor, que puede ser más eficiente que value().

Ejemplo

#include <optional>
#include <iostream>
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