◐ Shell
clean mode source ↗

std::optional<T>::or_else — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

template< class F > constexpr optional or_else( F&& f ) const&;

(1) (начиная с C++23)

template< class F > constexpr optional or_else( F&& f ) &&;

(2) (начиная с C++23)

Возвращает *this, если оно содержит значение. В противном случае возвращает результат f.

Программа некорректна, если std::remove_cvref_t<std::invoke_result_t<F>> не совпадает с std::optional<T>.

1) Эквивалентно return *this ? *this : std::forward<F>(f)();. Эта перегрузка участвует в разрешении перегрузки, только если моделируются как std::copy_constructible<T>, так и std::invocable<F>.

2) Эквивалентно return *this ? std::move(*this) : std::forward<F>(f)();. Эта перегрузка участвует в разрешении перегрузки, только если моделируются как std::move_constructible<T>, так и std::invocable<F>.

Параметры

f функция или объект Callable, которые возвращают std::optional<T>

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

*this или результат f, как описано выше.

Примечание

Макрос Тестирования функциональности Значение Стандарт Функциональность
__cpp_lib_optional 202110L (C++23) Монадические операции в std::optional

Пример

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

возвращает содержащееся значение, если доступно, иначе другое значение
(public функция-элемент) [править]
возвращает результат данной функции по содержащемуся значению, если оно существует, или пустой optional в противном случае
(public функция-элемент) [править]
возвращает optional, содержащий преобразованное содержащееся значение, если оно существует, или пустой optional в противном случае
(public функция-элемент) [править]