std::pmr::polymorphic_allocator
|
||
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 whose allocation behavior depends on the memory resource it is constructed with. Thus, different instances of polymorphic_allocator
can exhibit entirely different allocation behavior. This runtime polymorphism allows objects using polymorphic_allocator
to behave as if they used different allocator types at run time despite the identical static allocator type.
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) | |
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
compare two polymorphic_allocator s (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) |