Namespaces
Variants

std::expected<T,E>::value

来自 zh.cppreference.net
 
 
 
 
主模板
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包含期望值,则返回该所含值的引用。对于void偏特化不返回值。

否则,抛出类型为std::bad_expected_access<std::decay_t<E>>的异常,该异常包含error()的副本。

1,2)如果std::is_copy_constructible_v<E>是false,则程序非良构。
3,4)如果std::is_copy_constructible_v<E>或std::is_constructible_v<E, decltype(std::move(error()))>是false,则程序非良构。
5)如果std::is_copy_constructible_v<E>是false,则程序非良构。
6)如果std::is_move_constructible_v<E>是false,则程序非良构。

返回值

1,2) val
3,4) std :: move ( val )

异常

1,2,5) 若 * this 包含意外值,则抛出 std:: bad_expected_access ( std:: as_const ( error ( ) ) ) 。
3,4,6) 若 * this 包含意外值,则抛出 std:: bad_expected_access ( std :: move ( error ( ) ) ) 。

示例

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

缺陷报告 应用于 发布时行为 正确行为
LWG 3940 C++23 重载 (5,6) 未要求 E 可复制/移动构造 要求必须满足

参见

若存在期望值则返回该值,否则返回另一值
(公开成员函数)
访问期望值
(公开成员函数)
返回非期望值
(公开成员函数)
指示对包含非期望值的 expected 进行受检访问时抛出的异常
(类模板)