Namespaces
Variants

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

From cppreference.net
HTMLタグ、属性、C++コード内のテキストは翻訳せず、元のフォーマットを保持しました。C++固有の用語も翻訳していません。唯一翻訳したのは「(library fundamentals TS)」を「(ライブラリファンダメンタルTS)」にした部分のみです。 (注:このHTML要素には翻訳対象のテキストコンテンツが含まれていないため、元の構造をそのまま保持しています)
ヘッダーで定義 <experimental/optional>
二つの optional オブジェクトを比較
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)
optional オブジェクトと 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)
optional オブジェクトと 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) 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 と比較します。値の比較は( (19-22) では operator == を使用し、 (23-30) では operator < を使用) opt が値を保持している場合にのみ行われます。それ以外の場合、 opt value より 小さい と見なされます。

パラメータ

lhs, rhs, opt - 比較対象の optional オブジェクト
value - 格納されている値と比較する値
型要件
-
T はオーバーロード(1,2)を使用するために 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) (なし)