std::expected<T,E>::value
void | ||
constexpr T& value() &; | (1) | (с C++23) |
constexpr const T& value() const&; | (2) | (с C++23) |
constexpr T&& value() &&; | (3) | (с C++23) |
constexpr const T&& value() const&&; | (4) | (с C++23) |
void | ||
constexpr void value() const&; | (5) | (с C++23) |
constexpr void value() &&; | (6) | (с C++23) |
Если *this содержит ожидаемое значение, возвращает ссылку на содержащееся значение. Ничего не возвращает, если T имеет тип (возможно с квалификаторами cv) void.
В противном случае, выбрасывает исключение типа std::bad_expected_access<std::decay_t<E>>, содержащее копию error().
3,4) Если
std::is_copy_constructible_v<E> или std::is_constructible_v<E, decltype(std::move(error()))> является false, программа некорректна.Параметры
(нет)
Возвращаемое значение
1-4) Ожидаемое значение, содержащееся в
*this.
5,6) (нет)
Исключения
1,2,5) Выбрасывает
std::bad_expected_access(std::as_const(error())) если *this содержит неожидаемое значение.
3,4,6) Выбрасывает
std::bad_expected_access(std::move(error())) если *this содержит неожидаемое значение.Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 3940 | C++23 |
E не должно было требоваться копируемое/перемещаемое конструирование для перегрузок (5,6) | требуется |
См. также
| возвращает ожидаемое значение, если оно присутствует, другое значение в противном случае (публичный член-функция) |
|
| доступ к ожидаемому значению (публичный член-функция) |
|
| возвращает неожидаемое значение (публичный член-функция) |
|
|
(C++23) | исключение, указывающее проверенный доступ к expected содержащему неожидаемое значение (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/expected/value