std::pmr::polymorphic_allocator (3) - Linux Manuals

std::pmr::polymorphic_allocator: std::pmr::polymorphic_allocator


std::pmr::polymorphic_allocator - std::pmr::polymorphic_allocator


template< class T > (since C++17)
class polymorphic_allocator; (until C++20)
template< class T = std::byte > (since C++20)
class polymorphic_allocator;

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
constructor (public member function)

destructor Implicitly declared destructor
                                      (public member function)
(implicitly declared)

operator= Copy assignment operator is deleted
                                      (public member function)

Public member functions

                                      Allocate memory
allocate (public member function)
                                      Deallocate memory
deallocate (public member function)
                                      Constructs an object in allocated storage
construct (public member function)
                                      Destroys an object in allocated storage
destroy (public member function)

allocate_bytes Allocate raw aligned memory from the underlying resource
                                      (public member function)

deallocate_bytes Free raw memory obtained from allocate_bytes
                                      (public member function)

allocate_object Allocates raw memory suitable for an object or an array
                                      (public member function)

deallocate_object Frees raw memory obtained by allocate_object
                                      (public member function)

new_object Allocates and constructs an object
                                      (public member function)

delete_object Destroys and deallocates an object
                                      (public member function)
                                      Create a new polymorphic_allocator for use by a container's copy constructor
select_on_container_copy_construction (public member function)
                                      Returns a pointer to the underlying memory resource
resource (public member function)

Non-member functions

           compare two polymorphic_allocators
operator== (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.

See also

memory_resource an abstract interface for classes that encapsulate memory resources