std::pmr::polymorphic_allocator
|   | 
||
|   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 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 (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)  | |
|    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)  | |
Non-member functions
  compare two polymorphic_allocators (function)  | 
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.
See also
|    (C++17)  | 
    an abstract interface for classes that encapsulate memory resources   (class)  |