operator==(std::expected)

来自cppreference.com
< cpp‎ | utility‎ | expected
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(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)
 
 
template< class T2, class E2 >

  requires (!std::is_void_v<T2>)
friend constexpr bool operator==( const expected& lhs,

                                  const std::expected<T2, E2>& rhs );
(1) (C++23 起)
(T 不是 cv void)
template< class T2, class E2 >

  requires std::is_void_v<T2>
friend constexpr bool operator==( const expected& lhs,

                                  const std::expected<T2, E2>& rhs );
(2) (C++23 起)
(T 是 cv void)
template< class T2 >
friend constexpr bool operator==( const expected& x, const T2& val );
(3) (C++23 起)
(T 不是 cv void)
template< class E2 >

friend constexpr bool operator==( const expected& x,

                                  const unexpected<E2>& e );
(4) (C++23 起)

expected 对象执行比较操作。

1,2) 比较两个 expected 对象。当且仅当 lhs.has_value()rhs.has_value() 相等,且所含值相等时,对象才比较相等。
  • 对于重载 (1),如果表达式 *lhs == *rhslhs.error() == rhs.error() 不具有良好定义,或者它们的结果不能转换为 bool,则程序非良构。
  • 对于重载 (2),如果表达式 lhs.error() == rhs.error() 不具有良好定义,或者它的结果不能转换 为bool,则程序非良构。
3)expected 对象与一个值比较。当且仅当 x 包含一个期望值,且所含值等于 val 时,对象才比较相等。
  • 如果表达式*x == val 不具有良好定义,或者它的结果不能转换为 bool,则程序非良构。
4)expected 对象与一个非期望值比较。当且仅当 x 包含一个非期望值,且所含值等于 e.error() 时,对象才比较相等。
  • 如果表达式 x.error() == e.error() 不具有良好定义,或者它的结果不能转换为 bool,则程序非良构。

这些函数对通常无限定有限定查找不可见,而只能在 std::expected<T, E> 为参数的关联类时由实参依赖查找找到。

!= 运算符从 == 运算符合成

参数

lhs, rhs, x - 用于比较的 expected 对象
val - 需要被比较的包含在 x 中的期望的值
e - 需要被比较的包含在 x 中的非期望的值

返回值

1) 如果 lhs.has_value() != rhs.has_value() 为真,返回 false。此外,如果 lhs.has_value() 为真,返回 *lhs == *rhs。否则,返回 lhs.error() ==  rhs.error()
2) 如果 lhs.has_value() != rhs.has_value() 为真,返回 false。此外,如果 lhs.has_value() 为真,返回 true。否则,返回 lhs.error() ==  rhs.error()
3) 返回 x.has_value() && static_cast<bool>(*x == val).
4) 返回 !x.has_value() && static_cast<bool>(x.error() == e.error()).

异常

抛出比较时抛出的异常。

示例

参阅

表示为不期待的值
(类模板)