operator==, !=, <, <=, >, >=(std::experimental::optional)

来自cppreference.com


 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
在标头 <experimental/optional> 定义
Compare two optional objects
template< class T >
constexpr bool operator==( const optional<T>& lhs, const optional<T>& rhs );
(1) (库基础 TS)
template< class T >
constexpr bool operator!=( const optional<T>& lhs, const optional<T>& rhs );
(2) (库基础 TS)
template< class T >
constexpr bool operator<( const optional<T>& lhs, const optional<T>& rhs );
(3) (库基础 TS)
template< class T >
constexpr bool operator<=( const optional<T>& lhs, const optional<T>& rhs );
(4) (库基础 TS)
template< class T >
constexpr bool operator>( const optional<T>& lhs, const optional<T>& rhs );
(5) (库基础 TS)
template< class T >
constexpr bool operator>=( const optional<T>& lhs, const optional<T>& rhs );
(6) (库基础 TS)
Compare an optional object with a nullopt
template< class T >
constexpr bool operator==( const optional<T>& opt, std::nullopt_t ) noexcept;
(7) (库基础 TS)
template< class T >
constexpr bool operator==( std::nullopt_t, const optional<T>& opt ) noexcept;
(8) (库基础 TS)
template< class T >
constexpr bool operator!=( const optional<T>& opt, std::nullopt_t ) noexcept;
(9) (库基础 TS)
template< class T >
constexpr bool operator!=( std::nullopt_t, const optional<T>& opt ) noexcept;
(10) (库基础 TS)
template< class T >
constexpr bool operator<( const optional<T>& opt, std::nullopt_t ) noexcept;
(11) (库基础 TS)
template< class T >
constexpr bool operator<( std::nullopt_t, const optional<T>& opt ) noexcept;
(12) (库基础 TS)
template< class T >
constexpr bool operator<=( const optional<T>& opt, std::nullopt_t ) noexcept;
(13) (库基础 TS)
template< class T >
constexpr bool operator<=( std::nullopt_t, const optional<T>& opt ) noexcept;
(14) (库基础 TS)
template< class T >
constexpr bool operator>( const optional<T>& opt, std::nullopt_t ) noexcept;
(15) (库基础 TS)
template< class T >
constexpr bool operator>( std::nullopt_t, const optional<T>& opt ) noexcept;
(16) (库基础 TS)
template< class T >
constexpr bool operator>=( const optional<T>& opt, std::nullopt_t ) noexcept;
(17) (库基础 TS)
template< class T >
constexpr bool operator>=( std::nullopt_t, const optional<T>& opt ) noexcept;
(18) (库基础 TS)
Compare an optional object with a T
template< class T >
constexpr bool operator==( const optional<T>& opt, const T& value );
(19) (库基础 TS)
template< class T >
constexpr bool operator==( const T& value, const optional<T>& opt );
(20) (库基础 TS)
template< class T >
constexpr bool operator!=( const optional<T>& opt, const T& value );
(21) (库基础 TS)
template< class T >
constexpr bool operator!=( const T& value, const optional<T>& opt );
(22) (库基础 TS)
template< class T >
constexpr bool operator<( const optional<T>& opt, const T& value );
(23) (库基础 TS)
template< class T >
constexpr bool operator<( const T& value, const optional<T>& opt );
(24) (库基础 TS)
template< class T >
constexpr bool operator<=( const optional<T>& opt, const T& value );
(25) (库基础 TS)
template< class T >
constexpr bool operator<=( const T& value, const optional<T>& opt );
(26) (库基础 TS)
template< class T >
constexpr bool operator>( const optional<T>& opt, const T& value );
(27) (库基础 TS)
template< class T >
constexpr bool operator>( const T& value, const optional<T>& opt );
(28) (库基础 TS)
template< class T >
constexpr bool operator>=( const optional<T>& opt, const T& value );
(29) (库基础 TS)
template< class T >
constexpr bool operator>=( const T& value, const optional<T>& opt );
(30) (库基础 TS)

在 optional 对象上实施比较操作。

1-6) 比较两个 optional 对象 lhs 和 rhs。仅当 lhs 和 rhs 都含有值时,比较所含值((1,2) 使用 operator== 而 (3-6) 使用 operator<)。否则,
  • 当且仅当 lhs 和 rhs 均不含有值时,lhs 被认为等于 rhs。
  • 当且仅当 rhs 含有值而 lhs 不含值时,lhs 被认为小于 rhs。
7-18) 比较 opt 和 nullopt。等价于 (1-6) 与不含值的 optional 比较。
19-30) 比较 opt 和 value。仅当 opt 含有值时,比较两个值((19-22) 使用 operator==,(23-30) 使用 operator<)。否则,opt 被当做小于 value。

参数

lhs, rhs, opt - 要比较的 optional 对象
value - 要愚所含值比较的值
类型要求
-
为使用重载 (1,2), T 必须满足可相等比较 (EqualityComparable) 。

返回值

1) 如果 bool(lhs) != bool(rhs) 则返回 false。
否则,如果 bool(lhs) == false(而且 bool(rhs) == false)则返回 true。
否则返回 *lhs == *rhs。
2) 返回 !(lhs == rhs)。
3) 如果 bool(rhs) == false 则返回 false。
否则,如果 bool(lhs) == false,则返回 true。
否则返回 *x < *y。
4) 返回 !(rhs < lhs)。
5) 返回 rhs < lhs。
6) 返回 !(lhs < rhs)。
7,8) 返回 !opt。
9,10) 返回 bool(opt)。
11) 返回 false。
12) 返回 bool(opt)。
13) 返回 !opt。
14) 返回 true。
15) 返回 bool(opt)。
16) 返回 false。
17) 返回 true。
18) 返回 !opt。
19) 返回 bool(opt) ? *opt == value : false。
20) 返回 bool(opt) ? value == *opt : false。
21) 返回 bool(opt) ? !(*opt == value) : true。
22) 返回 bool(opt) ? !(value == *opt) : true。
23) 返回 bool(opt) ? *opt < value : true。
24) 返回 bool(opt) ? value < *opt : false。
25) 返回 !(opt > value)。
26) 返回 !(value > opt)。
27) 返回 bool(opt) ? value < *opt : false。
28) 返回 bool(opt) ? *opt < value : true。
29) 返回 !(opt < value)。
30) 返回 !(value < opt)。

异常

1-6) (无)
19-30) (无)