Namespaces
Variants

std::optional<T>:: value

From cppreference.net
Utilities library
constexpr T & value ( ) & ;
constexpr const T & value ( ) const & ;
(1) (начиная с C++17)
constexpr T && value ( ) && ;
constexpr const T && value ( ) const && ;
(2) (начиная с C++17)

Если * this содержит значение, возвращает ссылку на содержащееся значение.

В противном случае, выбрасывается исключение std::bad_optional_access .

Содержание

Параметры

(нет)

Возвращаемое значение

Ссылка на содержащееся значение.

Исключения

std::bad_optional_access если * this не содержит значения.

Примечания

Оператор разыменования operator*() не проверяет, содержит ли данный опционал значение, что может быть более эффективно, чем value() .

Пример

#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';
{

Вывод:

bad optional access
bad optional access
43
44

Смотрите также

возвращает содержащееся значение, если оно доступно, иначе другое значение
(public member function)
обращается к содержащемуся значению
(public member function)
исключение, указывающее на проверенный доступ к optional, не содержащему значения
(class)