std::pmr::polymorphic_allocator
|
Defined in header
<memory_resource> |
||
|
template< class T >
class polymorphic_allocator; |
(since C++17) (until C++20) |
|
|
template< class T = std::byte >
class polymorphic_allocator; |
(since C++20) | |
The class template std::pmr::polymorphic_allocator is an Allocator which exhibits different allocation behavior depending upon the std::pmr::memory_resource from which it is constructed. Since memory_resource uses runtime polymorphism to manage allocations, different container instances with polymorphic_allocator as their static allocator type are interoperable, but can behave as if they had different allocator types.
All specializations of polymorphic_allocator meet the Allocator completeness requirements.
Member types
| Member type | definition |
value_type |
T |
Member functions
Constructs a polymorphic_allocator(public member function) |
|
|
(destructor)
(implicitly declared)
|
Implicitly declared destructor (public member function) |
|
operator=
[deleted]
|
Copy assignment operator is deleted (public member function) |
Public member functions |
|
| Allocate memory (public member function) |
|
| Deallocate memory (public member function) |
|
| Constructs an object in allocated storage (public member function) |
|
|
(deprecated in C++20)
|
Destroys an object in allocated storage (public member function) |
|
(C++20)
|
Allocate raw aligned memory from the underlying resource (public member function) |
|
(C++20)
|
Free raw memory obtained from allocate_bytes (public member function) |
|
(C++20)
|
Allocates raw memory suitable for an object or an array (public member function) |
|
(C++20)
|
Frees raw memory obtained by allocate_object (public member function) |
|
(C++20)
|
Allocates and constructs an object (public member function) |
|
(C++20)
|
Destroys and deallocates an object (public member function) |
Create a new polymorphic_allocator for use by a container's copy constructor(public member function) |
|
| Returns a pointer to the underlying memory resource (public member function) |
|
Non-member functions
|
(removed in C++20)
|
compare two polymorphic_allocators(function) |
Notes
polymorphic_allocator does not propagate on container copy assignment, move assignment, or swap. As a result, move assignment of a polymorphic_allocator-using container can throw, and swapping two polymorphic_allocator-using containers whose allocators do not compare equal results in undefined behavior.
See also
|
(C++17)
|
an abstract interface for classes that encapsulate memory resources (class) |