NAME

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

Synopsis


Defined in header <variant>
template <class... Types> (1) (since C++17)
constexpr bool operator==(const std::variant<Types...>& v, const std::variant<Types...>& w);
template <class... Types> (2) (since C++17)
constexpr bool operator!=(const std::variant<Types...>& v, const std::variant<Types...>& w);
template <class... Types> (3) (since C++17)
constexpr bool operator<(const std::variant<Types...>& v, const std::variant<Types...>& w);
template <class... Types> (4) (since C++17)
constexpr bool operator>(const std::variant<Types...>& v, const std::variant<Types...>& w);
template <class... Types> (5) (since C++17)
constexpr bool operator<=(const std::variant<Types...>& v, const std::variant<Types...>& w);
template <class... Types> (6) (since C++17)
constexpr bool operator>=(const std::variant<Types...>& v, const std::variant<Types...>& w);


1) Equality operator for variants:


* If v.index() != w.index(), returns false;
* otherwise if v.valueless_by_exception(), returns true;
* otherwise returns std::get<v.index()>(v) == std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) == std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.


2) Inequality operator for variants:


* If v.index() != w.index(), returns true;
* otherwise if v.valueless_by_exception(), returns false;
* otherwise returns std::get<v.index()>(v) != std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) != std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.


3) Less-than operator for variants:


* If w.valueless_by_exception(), returns false;
* otherwise if v.valueless_by_exception(), returns true;
* otherwise if v.index() < w.index(), returns true;
* otherwise if v.index() > w.index(), returns false;
* otherwise returns std::get<v.index()>(v) < std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) < std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.


4) Greater-than operator for variants:


* If v.valueless_by_exception(), returns false;
* otherwise if w.valueless_by_exception(), returns true;
* otherwise if v.index() > w.index(), returns true;
* otherwise if v.index() < w.index(), returns false;
* otherwise returns std::get<v.index()>(v) > std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) > std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.


5) Less-equal operator for variants:


* If v.valueless_by_exception(), returns true;
* otherwise if w.valueless_by_exception(), returns false;
* otherwise if v.index() < w.index(), returns true;
* otherwise if v.index() > w.index(), returns false;
* otherwise returns std::get<v.index()>(v) <= std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) <= std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.


6) Greater-equal operator for variants:


* If w.valueless_by_exception(), returns true;
* otherwise if v.valueless_by_exception(), returns false;
* otherwise if v.index() > w.index(), returns true;
* otherwise if v.index() < w.index(), returns false;
* otherwise std::get<v.index()>(v) >= std::get<v.index()>(w). The behavior is undefined if std::get<i>(v) >= std::get<i>(w) is not a valid expression returning a type convertible to bool, for any i.

Parameters


v,w - variants to compare

Return value


The boolean result of the comparison as described above.

Example


 This section is incomplete
 Reason: no example

See also


operator==
operator!=
operator< compares optional objects
operator<= (function template)
operator>
operator>=


(C++17)