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