Namespaces
Variants
Views
Actions

std::pmr::polymorphic_allocator

From cppreference.com
< cpp‎ | memory
 
 
Dynamic memory management
Uninitialized storage
(C++17)
(deprecated since c++17)
(deprecated since c++17)
(deprecated since c++17)
Garbage collection support
Miscellaneous
(C++11)
(C++11)
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.

Contents

[edit] Member types

Member type definition
value_type T

[edit] Member functions

Constructs a polymorphic_allocator
(public member function) [edit]
(destructor)
(implicitly declared)
Implicitly declared destructor
(public member function) [edit]
operator=
[deleted]
Copy assignment operator is deleted
(public member function) [edit]
Public member functions
Allocate memory
(public member function) [edit]
Deallocate memory
(public member function) [edit]
Constructs an object in allocated storage
(public member function) [edit]
Destroys an object in allocated storage
(public member function) [edit]
Create a new polymorphic_allocator for use by a container's copy constructor
(public member function) [edit]
Returns a pointer to the underlying memory resource
(public member function) [edit]

[edit] Non-member functions

compare two polymorphic_allocators
(function) [edit]

[edit] 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.

[edit] See also

an abstract interface for classes that encapsulate memory resources
(class) [edit]