operator==, !=, <, <=, >, >=(std::experimental::optional)
From cppreference.com
< cpp | experimental | optional
| ヘッダ <experimental/optional>で定義 |
||
| 2つの optional オブジェクトを比較 |
||
| template< class T > constexpr bool operator==( const optional<T>& lhs, const optional<T>& rhs ); |
(1) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator!=( const optional<T>& lhs, const optional<T>& rhs ); |
(2) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& lhs, const optional<T>& rhs ); |
(3) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<=( const optional<T>& lhs, const optional<T>& rhs ); |
(4) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>( const optional<T>& lhs, const optional<T>& rhs ); |
(5) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>=( const optional<T>& lhs, const optional<T>& rhs ); |
(6) | (Library Fundamentals TS) |
optional オブジェクトと nullopt を比較 |
||
| template< class T > constexpr bool operator==( const optional<T>& opt, std::nullopt_t ) noexcept; |
(7) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator==( std::nullopt_t, const optional<T>& opt ) noexcept; |
(8) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator!=( const optional<T>& opt, std::nullopt_t ) noexcept; |
(9) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator!=( std::nullopt_t, const optional<T>& opt ) noexcept; |
(10) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& opt, std::nullopt_t ) noexcept; |
(11) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<( std::nullopt_t, const optional<T>& opt ) noexcept; |
(12) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<=( const optional<T>& opt, std::nullopt_t ) noexcept; |
(13) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<=( std::nullopt_t, const optional<T>& opt ) noexcept; |
(14) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>( const optional<T>& opt, std::nullopt_t ) noexcept; |
(15) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>( std::nullopt_t, const optional<T>& opt ) noexcept; |
(16) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>=( const optional<T>& opt, std::nullopt_t ) noexcept; |
(17) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>=( std::nullopt_t, const optional<T>& opt ) noexcept; |
(18) | (Library Fundamentals TS) |
optional オブジェクトと T を比較 |
||
| template< class T > constexpr bool operator==( const optional<T>& opt, const T& value ); |
(19) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator==( const T& value, const optional<T>& opt ); |
(20) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator!=( const optional<T>& opt, const T& value ); |
(21) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator!=( const T& value, const optional<T>& opt ); |
(22) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& opt, const T& value ); |
(23) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<( const T& value, const optional<T>& opt ); |
(24) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<=( const optional<T>& opt, const T& value ); |
(25) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator<=( const T& value, const optional<T>& opt ); |
(26) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>( const optional<T>& opt, const T& value ); |
(27) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>( const T& value, const optional<T>& opt ); |
(28) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>=( const optional<T>& opt, const T& value ); |
(29) | (Library Fundamentals TS) |
| template< class T > constexpr bool operator>=( const T& value, const optional<T>& opt ); |
(30) | (Library Fundamentals TS) |
optional オブジェクトに対して比較操作を実行します。
1-6) 2つの
optional オブジェクト lhs と rhs を比較します。含まれる値は、lhs と rhs の両方が値を保持している場合にのみ比較されます((1,2) の場合は operator== を使用し、(3-6) の場合は operator< を使用)。そうでない場合、- lhs は、lhs と rhs の両方が値を含んでいない場合に限り、rhs と等しいと見なされます。
- lhs は、rhs が値を持ち、lhs が値を持たない場合にのみ、rhs より小さいと見なされます。
7-18) opt を nullopt と比較します。値を含まない
optional と比較する場合の (1-6) と同等です。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) (なし)