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 对象 lhsrhs。仅当 lhsrhs 都含有值时,比较所含值((1,2) 使用 operator==(3-6) 使用 operator<)。否则,
  • 当且仅当 lhsrhs 均不含有值时,lhs 被认为等于 rhs
  • 当且仅当 rhs 含有值而 lhs 不含值时,lhs 被认为小于 rhs
7-18) 比较 optnullopt。等价于 (1-6) 与不含值的 optional 比较。
19-30) 比较 optvalue。仅当 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) (无)