23 General utilities library [utilities]

23.7 Variants [variant]

23.7.6 Relational operators [variant.relops]

template <class... Types> constexpr bool operator==(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) == get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если v.index() != w.index(), false; в противном случае v.valueless_­by_­exception(), если true,; иначе get<i>(v) == get<i>(w) с i бытием v.index().

template <class... Types> constexpr bool operator!=(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) != get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если v.index() != w.index(), true; в противном случае v.valueless_­by_­exception(), если false,; иначе get<i>(v) != get<i>(w) с i бытием v.index().

template <class... Types> constexpr bool operator<(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) < get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если w.valueless_­by_­exception(), false; в противном случае v.valueless_­by_­exception(), если true,; в противном случае, если v.index() < w.index(), true; в противном случае v.index() > w.index(), если false,; иначе get<i>(v) < get<i>(w) с i бытием v.index().

template <class... Types> constexpr bool operator>(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) > get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если v.valueless_­by_­exception(), false; в противном случае w.valueless_­by_­exception(), если true,; в противном случае, если v.index() > w.index(), true; в противном случае v.index() < w.index(), если false,; иначе get<i>(v) > get<i>(w) с i бытием v.index().

template <class... Types> constexpr bool operator<=(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) <= get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если v.valueless_­by_­exception(), true; в противном случае w.valueless_­by_­exception(), если false,; в противном случае, если v.index() < w.index(), true; в противном случае v.index() > w.index(), если false,; иначе get<i>(v) <= get<i>(w) с i бытием v.index().

template <class... Types> constexpr bool operator>=(const variant<Types...>& v, const variant<Types...>& w);

Requires: get<i>(v) >= get<i>(w) является допустимым выражением, возвращающим тип, в который можно преобразовать boolдля всех i.

Returns: Если w.valueless_­by_­exception(), true; в противном случае v.valueless_­by_­exception(), если false,; в противном случае, если v.index() > w.index(), true; в противном случае v.index() < w.index(), если false,; иначе get<i>(v) >= get<i>(w) с i бытием v.index().