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

来自cppreference.com
< cpp‎ | utility‎ | expected
 
 
 
 
主模板
constexpr T& value()&;
(1) (C++23 起)
constexprconst T& value()const&;
(2) (C++23 起)
constexpr T&& value()&&;
(3) (C++23 起)
constexprconst T&& value()const&&;
(4) (C++23 起)
void 部分特化
constexprvoid value()const&;
(5) (C++23 起)
constexprvoid value()&&;
(6) (C++23 起)

如果 *this 包含预期值,那么返回到该预期值的引用。对于 void 部分特化不会返回值。

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

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 的有检查访问的异常
(类模板)[编辑]
close