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.
The polymorphic_allocator::construct
member function does uses-allocator construction, so that the elements of a container using a polymorphic_allocator
will use that same allocator for their own allocations. For example, a std::pmr::vector<std::pmr::string>
will use the same memory_resource
for the vector
's storage and each string
's storage.
Member type | definition |
---|---|
value_type | T |
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) |
(removed in C++20) | compare two polymorphic_allocator s (function) |
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.
Feature-test macro |
---|
__cpp_lib_polymorphic_allocator |
(C++17) | an abstract interface for classes that encapsulate memory resources (class) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/polymorphic_allocator