operator==, !=, <, <=, >, >=, <=>(std::variant)
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <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 |
戻り値
上の説明通りの比較結果。
例
| This section is incomplete Reason: no example |
関連項目
(C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20) |
optional オブジェクトを比較します (関数テンプレート) |