42 template <
typename T1,
typename T2>
51 virtual self_type&
operator=(
const self_type& aRhs) = 0;
58 friend void swap(self_type& a, self_type& b)
61 swap(a.first(), b.first());
62 swap(a.second(), b.second());
65 constexpr bool operator==(
const self_type& that)
const noexcept
67 return first() == that.first() &&
second() == that.second();
69 constexpr std::partial_ordering
operator<=>(
const self_type& that)
const noexcept
72 return std::partial_ordering::equivalent;
73 else if (std::forward_as_tuple(
first(),
second()) < std::forward_as_tuple(that.first(), that.second()))
74 return std::partial_ordering::less;
76 return std::partial_ordering::greater;
virtual self_type & operator=(const self_type &aRhs)=0
virtual const second_type & second() const =0
constexpr bool operator==(const self_type &that) const noexcept
constexpr std::partial_ordering operator<=>(const self_type &that) const noexcept
virtual const first_type & first() const =0
friend void swap(self_type &a, self_type &b)
virtual first_type & first()=0
virtual second_type & second()=0
void swap(plf::hive< element_type, allocator_type > &a, plf::hive< element_type, allocator_type > &b) noexcept(std::allocator_traits< allocator_type >::propagate_on_container_swap::value||std::allocator_traits< allocator_type >::is_always_equal::value)