Namespaces
Variants
Views
Actions

std::pmr::polymorphic_allocator

From cppreference.com
< cpp‎ | memory
 
 
Dynamic memory management
Smart pointers
(C++11)
(C++11)
(C++11)
(until C++17)
(C++11)
(C++23)
Allocators
pmr::polymorphic_allocator
(C++17)
Memory resources
Uninitialized storage
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Garbage collection support
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
Miscellaneous
(C++20)
(C++11)
(C++11)
Low level memory management
 
 
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.

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]
(deprecated in C++20)
Destroys an object in allocated storage
(public member function) [edit]
Allocate raw aligned memory from the underlying resource
(public member function) [edit]
Free raw memory obtained from allocate_bytes
(public member function) [edit]
Allocates raw memory suitable for an object or an array
(public member function) [edit]
Frees raw memory obtained by allocate_object
(public member function) [edit]
Allocates and constructs an object
(public member function) [edit]
Destroys and deallocates an object
(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

(removed in C++20)
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.

Feature-test macro
__cpp_lib_polymorphic_allocator

[edit] See also

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