Namespaces
Variants

std::optional<T>::value

Из ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы проверки возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
 
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)