< cpp‎ | memory
Dynamic memory management
Uninitialized storage
(deprecated since c++17)
(deprecated since c++17)
(deprecated since c++17)
Garbage collection support
C Library
Low level memory management
Defined in header <memory_resource>
template< class T >
class polymorphic_allocator;
(since C++17)

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.

Member types

Member type definition
value_type T

Member functions

Constructs a polymorphic_allocator
(public member function)
(implicitly declared)
Implicitly declared destructor
(public member function)
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)
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_allocators


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

an abstract interface for classes that encapsulate memory resources