##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::pmr::polymorphic_allocator

From cppreference.com
< cpp‎ | memory

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.

### [edit] Member types

Member type | definition
`value_type` | `T`

### [edit] Member functions

(constructor) | 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 | Allocate memory (public member function) [edit]
deallocate | Deallocate memory (public member function) [edit]
construct | Constructs an object in allocated storage (public member function) [edit]
destroy | Destroys an object in allocated storage (public member function) [edit]
select_on_container_copy_construction | Create a new `polymorphic_allocator` for use by a container's copy constructor (public member function) [edit]
resource | Returns a pointer to the underlying memory resource (public member function) [edit]

### [edit] Non-member functions

operator==operator!= | compare two `polymorphic_allocator`s (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

memory_resource (C++17) | an abstract interface for classes that encapsulate memory resources (class) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/polymorphic_allocator&oldid=86042"