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