std::allocator_traits< pmr::polymorphic_allocator< _Tp > > Struct Template Reference

## Public Types

using | allocator_type = pmr::polymorphic_allocator< _Tp >
using | const_pointer = const _Tp *
using | const_void_pointer = const void *
using | difference_type = std::ptrdiff_t
using | is_always_equal = false_type
using | pointer = _Tp *
template<typename _Up >
using | rebind_alloc = pmr::polymorphic_allocator< _Up >
template<typename _Up >
using | rebind_traits = allocator_traits< pmr::polymorphic_allocator< _Up > >
using | size_type = std::size_t
using | value_type = _Tp
using | void_pointer = void *

## Static Public Member Functions

static pointer | allocate (allocator_type &__a, size_type __n)
static pointer | allocate (allocator_type &__a, size_type __n, const_void_pointer)
template<typename _Up , typename... _Args>
static void | construct (allocator_type &__a, _Up *__p, _Args &&... __args)
static void | deallocate (allocator_type &__a, pointer __p, size_type __n)
template<typename _Up >
static constexpr void | destroy (allocator_type &, _Up *__p) noexcept(is_nothrow_destructible< _Up >::value)
static constexpr size_type | max_size (const allocator_type &) noexcept
using | propagate_on_container_copy_assignment = false_type
using | propagate_on_container_move_assignment = false_type
using | propagate_on_container_swap = false_type
static allocator_type | select_on_container_copy_construction (const allocator_type &) noexcept

## Detailed Description

### template<typename _Tp>
struct std::allocator_traits< pmr::polymorphic_allocator< _Tp > >

Partial specialization for std::pmr::polymorphic_allocator.

Definition at line 425 of file memory_resource.

## Member Typedef Documentation

## allocator_type

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::allocator_type = pmr::polymorphic_allocator<_Tp>

The allocator type.

Definition at line 428 of file memory_resource.

## const_pointer

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::const_pointer = const _Tp*

The allocator's const pointer type.

Definition at line 437 of file memory_resource.

## const_void_pointer

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::const_void_pointer = const void*

The allocator's const void pointer type.

Definition at line 443 of file memory_resource.

## difference_type

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::difference_type = std::ptrdiff_t

The allocator's difference type.

Definition at line 446 of file memory_resource.

## is_always_equal

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::is_always_equal = false_type

Whether all instances of the allocator type compare equal.

Definition at line 465 of file memory_resource.

## pointer

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::pointer = _Tp*

The allocator's pointer type.

Definition at line 434 of file memory_resource.

## propagate_on_container_copy_assignment

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::propagate_on_container_copy_assignment = false_type

A `polymorphic_allocator` does not propagate when a container is copied, moved, or swapped.

Definition at line 455 of file memory_resource.

## propagate_on_container_move_assignment

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::propagate_on_container_move_assignment = false_type

A `polymorphic_allocator` does not propagate when a container is copied, moved, or swapped.

Definition at line 456 of file memory_resource.

## propagate_on_container_swap

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::propagate_on_container_swap = false_type

A `polymorphic_allocator` does not propagate when a container is copied, moved, or swapped.

Definition at line 457 of file memory_resource.

## size_type

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::size_type = std::size_t

The allocator's size type.

Definition at line 449 of file memory_resource.

## value_type

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::value_type = _Tp

The allocated type.

Definition at line 431 of file memory_resource.

## void_pointer

template<typename _Tp >

using std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::void_pointer = void*

The allocator's void pointer type.

Definition at line 440 of file memory_resource.

## Member Function Documentation

## allocate() [1/2]

template<typename _Tp >

static pointer std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::allocate | ( | allocator_type & | __a,
|  | size_type | __n
| ) |  |

inline static

Allocate memory.

Parameters

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

Calls `a.allocate(n)`.

Definition at line 481 of file memory_resource.

## allocate() [2/2]

template<typename _Tp >

static pointer std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::allocate | ( | allocator_type & | __a,
|  | size_type | __n,
|  | const_void_pointer |
| ) |  |

inline static

Allocate memory.

Parameters

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

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

The third parameter is ignored..

Returns `a.allocate(n)`.

Definition at line 496 of file memory_resource.

## construct()

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

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

inline static

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 524 of file memory_resource.

## deallocate()

template<typename _Tp >

static void std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::deallocate | ( | allocator_type & | __a,
|  | pointer | __p,
|  | size_type | __n
| ) |  |

inline static

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 508 of file memory_resource.

## destroy()

template<typename _Tp >
template<typename _Up >

static constexpr void std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::destroy | ( | allocator_type & | ,
|  | _Up * | __p
| ) |  |

inline static constexpr noexcept

Destroy an object of type `_Up`

Parameters

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

Calls `p->_Up()`.

Definition at line 536 of file memory_resource.

## max_size()

template<typename _Tp >

static constexpr size_type std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::max_size | ( | const allocator_type & |  | ) |

inline static constexpr noexcept

The maximum supported allocation size.

Returns
  `numeric_limits<size_t>max() / sizeof(value_type)`

Definition at line 545 of file memory_resource.

## select_on_container_copy_construction()

template<typename _Tp >

static allocator_type std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::select_on_container_copy_construction | ( | const allocator_type & |  | ) |

inline static noexcept

A `polymorphic_allocator` does not propagate when a container is copied, moved, or swapped.

Definition at line 460 of file memory_resource.

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

- memory_resource