命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | utility‎ | expected
 
 
 
 
主模板
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++ 标准。

DR 应用于 已发布行为 正确行为
LWG 3940 C++23 对于重载 (5,6)E 不需要是可复制/可移动构造的 需要

[编辑] 参见

如果存在期望值则返回它,否则返回另一个值
(公共成员函数) [编辑]
访问期望值
(公共成员函数) [编辑]
返回非期望值
(公共成员函数) [编辑]
指示对包含非期望值的 expected 进行检查访问的异常
(类模板) [编辑]