std::allocator_traits< allocator< _Tp > > Struct Template Reference
Utilities » Memory » Allocators

`#include <memory>`

## Public Types

using | allocator_type
using | const_pointer
using | const_void_pointer
using | difference_type
using | is_always_equal
using | pointer
using | propagate_on_container_copy_assignment
using | propagate_on_container_move_assignment
using | propagate_on_container_swap
template<typename _Up>
using | rebind_alloc
template<typename _Up>
using | rebind_traits
using | size_type
using | value_type
using | void_pointer

## Static Public Member Functions

static constexpr pointer | allocate (allocator_type &__a, size_type __n)
static constexpr pointer | allocate (allocator_type &__a, size_type __n, const_void_pointer __hint)
static constexpr auto | allocate_at_least (allocator_type &__a, size_type __n) -> allocation_result< pointer, size_type >
template<typename _Up, typename... _Args>
static constexpr void | construct (allocator_type &__a, _Up *__p, _Args &&... __args) noexcept(__is_nothrow_new_constructible< _Up, _Args... >)
static constexpr void | deallocate (allocator_type &__a, pointer __p, size_type __n)
template<typename _Up>
static constexpr void | destroy (allocator_type &__a, _Up *__p) noexcept(is_nothrow_destructible< _Up >::value)
static constexpr size_type | max_size (const allocator_type &__a) noexcept
static constexpr allocator_type | select_on_container_copy_construction (const allocator_type &__rhs)

## Detailed Description

template<typename _Tp>
struct std::allocator_traits< allocator< _Tp > >

Partial specialization for std::allocator.

Since
  C++11

See also
  std::allocator_traits

Definition at line 584 of file bits/alloc_traits.h.

## Member Typedef Documentation

## allocator_type

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::allocator_type

The allocator type.

Definition at line 587 of file bits/alloc_traits.h.

## const_pointer

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::const_pointer

The allocator's const pointer type.

Definition at line 596 of file bits/alloc_traits.h.

## const_void_pointer

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::const_void_pointer

The allocator's const void pointer type.

Definition at line 602 of file bits/alloc_traits.h.

## difference_type

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::difference_type

The allocator's difference type.

Definition at line 605 of file bits/alloc_traits.h.

## is_always_equal

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::is_always_equal

Whether all instances of the allocator type compare equal.

Definition at line 620 of file bits/alloc_traits.h.

## pointer

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::pointer

The allocator's pointer type.

Definition at line 593 of file bits/alloc_traits.h.

## propagate_on_container_copy_assignment

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::propagate_on_container_copy_assignment

How the allocator is propagated on copy assignment.

Definition at line 611 of file bits/alloc_traits.h.

## propagate_on_container_move_assignment

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::propagate_on_container_move_assignment

How the allocator is propagated on move assignment.

Definition at line 614 of file bits/alloc_traits.h.

## propagate_on_container_swap

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::propagate_on_container_swap

How the allocator is propagated on swap.

Definition at line 617 of file bits/alloc_traits.h.

## rebind_alloc

template<typename _Tp>
template<typename _Up>

using std::allocator_traits< allocator< _Tp > >::rebind_alloc

Definition at line 623 of file bits/alloc_traits.h.

## rebind_traits

template<typename _Tp>
template<typename _Up>

using std::allocator_traits< allocator< _Tp > >::rebind_traits

Definition at line 626 of file bits/alloc_traits.h.

## size_type

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::size_type

The allocator's size type.

Definition at line 608 of file bits/alloc_traits.h.

## value_type

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::value_type

The allocated type.

Definition at line 590 of file bits/alloc_traits.h.

## void_pointer

template<typename _Tp>

using std::allocator_traits< allocator< _Tp > >::void_pointer

The allocator's void pointer type.

Definition at line 599 of file bits/alloc_traits.h.

## Member Function Documentation

## allocate() [1/2]

template<typename _Tp>

constexpr pointer std::allocator_traits< allocator< _Tp > >::allocate | ( | allocator_type & | __a,
|  | size_type | __n )

inline static constexpr

Allocate memory.

Parameters

  __a | An allocator.
  __n | The number of objects to allocate space for.

Calls `a.allocate(n)`

Definition at line 637 of file bits/alloc_traits.h.

## allocate() [2/2]

template<typename _Tp>

constexpr pointer std::allocator_traits< allocator< _Tp > >::allocate | ( | allocator_type & | __a,
|  | size_type | __n,
|  | const_void_pointer | __hint )

inline static constexpr

Allocate memory.

Parameters

  __a | An allocator.
  __n | The number of objects to allocate space for.
  __hint | Aid to locality.

Returns
  Memory of suitable size and alignment for n objects of type `value_type`

Returns a.allocate(n, hint)

Definition at line 652 of file bits/alloc_traits.h.

## allocate_at_least()

template<typename _Tp>

constexpr auto std::allocator_traits< allocator< _Tp > >::allocate_at_least | ( | allocator_type & | __a,
|  | size_type | __n )->allocation_result< pointer, size_type >

inline static nodiscard constexpr

Allocate memory, generously.

Parameters

  __a | An allocator.
  __n | The minimum number of objects to allocate space for.

Returns
  Memory of suitable size and alignment for n or more contiguous objects of type value_type.

Returns a.allocate_at_least(n).

Definition at line 673 of file bits/alloc_traits.h.

## construct()

template<typename _Tp>
template<typename _Up, typename... _Args>

constexpr void std::allocator_traits< allocator< _Tp > >::construct | ( | allocator_type & | __a,
|  | _Up * | __p,
|  | _Args &&... | __args )

inline static constexpr noexcept

Construct an object of type _Up.

Parameters

  __a | An allocator.
  __p | Pointer to memory of suitable size and alignment for an object of type _Up.
  __args | Constructor arguments.

Calls __a.construct(__p, std::forward<_Args>(__args)...) in C++11, C++14 and C++17. Changed in C++20 to call std::construct_at(__p, std::forward<_Args>(__args)...) instead.

Definition at line 705 of file bits/alloc_traits.h.

References std::_Construct(), and std::forward().

## deallocate()

template<typename _Tp>

constexpr void std::allocator_traits< allocator< _Tp > >::deallocate | ( | allocator_type & | __a,
|  | pointer | __p,
|  | size_type | __n )

inline static constexpr

Deallocate memory.

Parameters

  __a | An allocator.
  __p | Pointer to the memory to deallocate.
  __n | The number of objects space was allocated for.

Calls a.deallocate(p, n)

Definition at line 688 of file bits/alloc_traits.h.

## destroy()

template<typename _Tp>
template<typename _Up>

constexpr void std::allocator_traits< allocator< _Tp > >::destroy | ( | allocator_type & | __a,
|  | _Up * | __p )

inline static constexpr noexcept

Destroy an object of type _Up.

Parameters

  __a | An allocator.
  __p | Pointer to the object to destroy

Calls `__a.destroy(__p)`.

Definition at line 732 of file bits/alloc_traits.h.

## max_size()

template<typename _Tp>

constexpr size_type std::allocator_traits< allocator< _Tp > >::max_size | ( | const allocator_type & | __a | ) |

inline static constexpr noexcept

The maximum supported allocation size.

Parameters

  __a | An allocator.

Returns
  `__a.max_size()`

Definition at line 749 of file bits/alloc_traits.h.

## select_on_container_copy_construction()

template<typename _Tp>

constexpr allocator_type std::allocator_traits< allocator< _Tp > >::select_on_container_copy_construction | ( | const allocator_type & | __rhs | ) |

inline static constexpr

Obtain an allocator to use when copying a container.

Parameters

  __rhs | An allocator.

Returns
  `__rhs`

Definition at line 765 of file bits/alloc_traits.h.

The documentation for this struct was generated from the following file:

- bits/alloc_traits.h