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

来自cppreference.com
< cpp‎ | utility‎ | expected
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 
 
主模板
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 部分特化不会返回值。

否则,抛出包含 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 的有检查访问的异常
(类模板)