名前空間
変種
操作

operator==, !=, <, <=, >, >=, <=>(std::variant)

提供: cppreference.com
< cpp‎ | utility‎ | variant
 
 
 
std::variant
メンバ関数
観察
変更
非メンバ関数
operator==operator!=operator<operator<=operator>operator>=operator<=>
(C++20)
ヘルパークラス
ヘルパーオブジェクト
 
ヘッダ <variant> で定義
template< class... Types >

constexpr bool operator==( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );
(1) (C++17以上)
template< class... Types >

constexpr bool operator!=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );
(2) (C++17以上)
template< class... Types >

constexpr bool operator<( const std::variant<Types...>& v,

                          const std::variant<Types...>& w );
(3) (C++17以上)
template< class... Types >

constexpr bool operator>( const std::variant<Types...>& v,

                          const std::variant<Types...>& w );
(4) (C++17以上)
template< class... Types >

constexpr bool operator<=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );
(5) (C++17以上)
template< class... Types >

constexpr bool operator>=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );
(6) (C++17以上)
template< class... Types >

constexpr std::common_comparison_category_t<
    std::compare_three_way_result_t<Types>...>
    operator<=>( const std::variant<Types...>& v,

                 const std::variant<Types...>& w );
(7) (C++20以上)
1) variant のための等しい演算子。
  • v.index() != w.index() であれば、 false を返します。
  • そうでなく、 v.valueless_by_exception() であれば、 true を返します。
  • そうでなければ、 std::get<v.index()>(v) == std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) == std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
2) variant のための等しくない演算子。
  • v.index() != w.index() であれば、 true を返します。
  • そうでなく、 v.valueless_by_exception() であれば、 false を返します。
  • そうでなければ、 std::get<v.index()>(v) != std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) != std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
3) variant のための小なり演算子。
  • w.valueless_by_exception() であれば、 false を返します。
  • そうでなく、 v.valueless_by_exception() であれば、 true を返します。
  • そうでなく、 v.index() < w.index() であれば、 true を返します。
  • そうでなく、 v.index() > w.index() であれば、 false を返します。
  • そうでなければ、 std::get<v.index()>(v) < std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) < std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
4) variant のための大なり演算子。
  • v.valueless_by_exception() であれば、 false を返します。
  • そうでなく、 w.valueless_by_exception() であれば、 true を返します。
  • そうでなく、 v.index() > w.index() であれば、 true を返します。
  • そうでなく、 v.index() < w.index() であれば、 false を返します。
  • そうでなければ、 std::get<v.index()>(v) > std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) > std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
5) variant のための小なりイコール演算子。
  • v.valueless_by_exception() であれば、 true を返します。
  • そうでなく、 w.valueless_by_exception() であれば、 false を返します。
  • そうでなく、 v.index() < w.index() であれば、 true を返します。
  • そうでなく、 v.index() > w.index() であれば、 false を返します。
  • そうでなければ、 std::get<v.index()>(v) <= std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) <= std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
6) variant のための大なりイコール演算子。
  • w.valueless_by_exception() であれば、 true を返します。
  • そうでなく、 v.valueless_by_exception() であれば、 false を返します。
  • そうでなく、 v.index() > w.index() であれば、 true を返します。
  • そうでなく、 v.index() < w.index() であれば、 false を返します。
  • そうでなければ、 std::get<v.index()>(v) >= std::get<v.index()>(w) を返します。 任意の i について std::get<i>(v) >= std::get<i>(w) が bool に変換可能な型を返す有効な式でなければ、動作は未定義です。
7) variant のための三方比較演算子。
  • v.valueless_by_exception()w.valueless_by_exception() がどちらも true であれば、 std::strong_ordering::equal を返します。
  • そうでなく、 v.valueless_by_exception()true であれば、 std::strong_ordering::less を返します。
  • そうでなく、 w.valueless_by_exception()true であれば、 std::strong_ordering::greater を返します。
  • そうでなく、 v.index() != w.index() であれば、 v.index() <=> w.index() を返します。
  • そうでなければ、 std::get<v.index()>(v) <=> std::get<v.index()>(w) と同等です。

目次

[編集] 引数

v,w - 比較する variant

[編集] 戻り値

上の説明通りの比較結果。

[編集]

[編集] 関連項目

(C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20)
optional オブジェクトを比較します
(関数テンプレート) [edit]