operator==, !=, <, <=, >, >=(std::experimental::optional)
来自cppreference.com
| 在标头 <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) (无)