45    template <typename T, typename Pred = std::less<typename crack_key<T>::key_type>, 
typename Alloc = std::allocator<T>>
 
   81        set(std::initializer_list<value_type> aElements) :
 
 
   84        template <
typename InputIter>
 
   85        set(InputIter aFirst, InputIter aLast) :
 
 
   95        constexpr bool operator==(
const self_type& that) 
const noexcept 
 
   99        constexpr std::partial_ordering 
operator<=>(
const self_type& that) 
const noexcept 
 
  108        void clear() final { iSet.clear(); }
 
  119        abstract_const_iterator* do_begin(
void* memory) 
const final { 
return new (memory) container_const_iterator(iSet.begin()); }
 
  120        abstract_const_iterator* do_end(
void* memory) 
const final { 
return new (memory) container_const_iterator(iSet.end()); }
 
  121        abstract_iterator* do_begin(
void* memory) 
final { 
return new (memory) container_iterator(iSet.begin()); }
 
  122        abstract_iterator* do_end(
void* memory) 
final { 
return new (memory) container_iterator(iSet.end()); }
 
  123        abstract_iterator* do_erase(
void* memory, 
const abstract_const_iterator& aPosition) 
final { 
return new (memory) container_iterator(iSet.erase(
static_cast<const container_const_iterator&
>(aPosition))); }
 
  124        abstract_iterator* do_erase(
void* memory, 
const abstract_const_iterator& aFirst, 
const abstract_const_iterator& aLast) 
final { 
return new (memory) container_iterator(iSet.erase(
static_cast<const container_const_iterator&
>(aFirst), 
static_cast<const container_const_iterator&
>(aLast))); }
 
 
  134    template <typename T, typename Pred = std::less<typename crack_key<T>::key_type>, 
typename Alloc = std::allocator<T>>
 
  169        multiset(std::initializer_list<value_type> aElements) :
 
 
  172        template <
typename InputIter>
 
  183        constexpr bool operator==(
const self_type& that) 
const noexcept 
  185            return as_std_multiset() == that.as_std_multiset();
 
 
  187        constexpr std::partial_ordering 
operator<=>(
const self_type& that) 
const noexcept 
  189            return as_std_multiset() <=> that.as_std_multiset();
 
 
  196        void clear() final { iSet.clear(); }
 
  207        abstract_const_iterator* do_begin(
void* memory) 
const final { 
return new (memory) container_const_iterator(iSet.begin()); }
 
  208        abstract_const_iterator* do_end(
void* memory) 
const final { 
return new (memory) container_const_iterator(iSet.end()); }
 
  209        abstract_iterator* do_begin(
void* memory) 
final { 
return new (memory) container_iterator(iSet.begin()); }
 
  210        abstract_iterator* do_end(
void* memory) 
final { 
return new (memory) container_iterator(iSet.end()); }
 
  211        abstract_iterator* do_erase(
void* memory, 
const abstract_const_iterator& aPosition) 
final { 
return new (memory) container_iterator(iSet.erase(
static_cast<const container_const_iterator&
>(aPosition))); }
 
  212        abstract_iterator* do_erase(
void* memory, 
const abstract_const_iterator& aFirst, 
const abstract_const_iterator& aLast) 
final { 
return new (memory) container_iterator(iSet.erase(
static_cast<const container_const_iterator&
>(aFirst), 
static_cast<const container_const_iterator&
>(aLast))); }
 
 
base_type::abstract_iterator abstract_iterator
base_type::iterator iterator
base_type::const_iterator const_iterator
base_type::const_iterator const_iterator
base_type::abstract_iterator abstract_iterator
base_type::iterator iterator
abstract_type::abstract_iterator abstract_iterator
multiset(InputIter aFirst, InputIter aLast)
constexpr bool operator==(const self_type &that) const noexcept
abstract_const_iterator * do_find(void *memory, const abstract_key_type &aKey) const final
multiset(std::initializer_list< value_type > aElements)
std_type to_std_multiset() const
abstract_type::const_iterator const_iterator
const std_type & as_std_multiset() const
constexpr std::partial_ordering operator<=>(const self_type &that) const noexcept
mutable_multiset< value_type, compare_type, allocator_type > std_type
abstract_iterator * do_find(void *memory, const abstract_key_type &aKey) final
abstract_type::iterator iterator
size_type size() const noexcept final
container::iterator< abstract_value_type, typename std_type::iterator, typename std_type::const_iterator > container_iterator
size_type max_size() const noexcept final
abstract_t< T > abstract_value_type
abstract_type::abstract_const_iterator abstract_const_iterator
abstract_t< T > abstract_key_type
abstract_type::size_type size_type
i_multiset< abstract_t< T > > abstract_type
void assign(const abstract_container &aOther) final
std_type & as_std_multiset()
abstract_iterator * do_insert(void *memory, const abstract_value_type &aValue) final
multiset(const abstract_container &aOther)
container::const_iterator< abstract_value_type, typename std_type::const_iterator > container_const_iterator
iterator insert(const typename base_type::value_type &aValue)
void assign(const abstract_container &aOther) final
size_type size() const noexcept final
abstract_iterator * do_find(void *memory, const abstract_key_type &aKey) final
size_type max_size() const noexcept final
const std_type & as_std_set() const
abstract_type::size_type size_type
std_type to_std_set() const
abstract_type::abstract_iterator abstract_iterator
mutable_set< value_type, compare_type, allocator_type > std_type
container::const_iterator< value_type, typename std_type::const_iterator > container_const_iterator
abstract_type::abstract_const_iterator abstract_const_iterator
abstract_type::iterator iterator
abstract_const_iterator * do_find(void *memory, const abstract_key_type &aKey) const final
abstract_t< T > abstract_key_type
i_set< abstract_t< T > > abstract_type
constexpr std::partial_ordering operator<=>(const self_type &that) const noexcept
set(InputIter aFirst, InputIter aLast)
constexpr bool operator==(const self_type &that) const noexcept
abstract_type::const_iterator const_iterator
container::iterator< value_type, typename std_type::iterator, typename std_type::const_iterator > container_iterator
set(const abstract_container &aOther)
set(std::initializer_list< value_type > aElements)
abstract_iterator * do_insert(void *memory, const abstract_value_type &aValue) final
abstract_t< T > abstract_value_type
typename detail::abstract_type< T >::type abstract_t