29template <
typename T,
typename ActualAllocator = std::allocator<T>>
34 using value_type =
typename allocator_traits::value_type;
36 static_assert(std::is_same_v<T, value_type>);
38 template <
class To>
struct rebind final {
40 To,
typename allocator_traits::template rebind_alloc<To>>;
44 typename allocator_traits::template rebind_alloc<value_type>;
61 To,
typename allocator_traits::template rebind_alloc<To>>&
63 :
allocator(allocator_.get_allocator()) {}
66 return allocator_traits::allocate(
allocator, n);
70 allocator_traits::deallocate(
allocator, p, n);
75 noexcept(std::is_nothrow_default_constructible_v<U>) {
76 ::new (
static_cast<void*
>(ptr)) U;
80 typename allocator_traits::propagate_on_container_copy_assignment;
82 typename allocator_traits::propagate_on_container_move_assignment;
84 typename allocator_traits::propagate_on_container_swap;
87template <
typename T0,
typename A0,
typename T1,
typename A1>
90 return x.get_allocator() ==
y.get_allocator();
93template <
typename T0,
typename A0,
typename T1,
typename A1>
void construct(U *ptr) const noexcept(std::is_nothrow_default_constructible_v< U >)
void deallocate(T *p, std::size_t n) noexcept
DefaultInitAllocatorAdaptor(const DefaultInitAllocatorAdaptor< To, typename allocator_traits::template rebind_alloc< To > > &allocator_) noexcept
const allocator_type & get_allocator() const noexcept
typename allocator_traits::propagate_on_container_swap propagate_on_container_swap
T * allocate(std::size_t n)
std::allocator_traits< ActualAllocator > allocator_traits
typename allocator_traits::propagate_on_container_move_assignment propagate_on_container_move_assignment
typename allocator_traits::propagate_on_container_copy_assignment propagate_on_container_copy_assignment
DefaultInitAllocatorAdaptor() noexcept=default
typename allocator_traits::value_type value_type
typename allocator_traits::template rebind_alloc< value_type > allocator_type
bool operator!=(const AlignedAllocator< T1, A1 > &, const AlignedAllocator< T2, A2 > &)
bool operator==(const AlignedAllocator< T1, A1 > &, const AlignedAllocator< T2, A2 > &)
DefaultInitAllocatorAdaptor< To, typename allocator_traits::template rebind_alloc< To > > other