Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/memory/polymorphic allocator"

From cppreference.com
< cpp‎ | memory
(added link to memory_resource into "see also" block)
(spell out some potential caveats)
Line 33: Line 33:
 
{{dsc inc | cpp/memory/polymorphic_allocator/dsc operator eq}}
 
{{dsc inc | cpp/memory/polymorphic_allocator/dsc operator eq}}
 
{{dsc end}}
 
{{dsc end}}
 +
 +
=== Notes ===
 +
{{tt|polymorphic_allocator}} does not propagate on container copy assignment, move assignment, or swap. As a result, move assignment of a {{tt|polymorphic_allocator}}-using container can throw, and swapping two {{tt|polymorphic_allocator}}-using containers whose allocators do not compare equal results in undefined behavior.
  
 
===See also===
 
===See also===

Revision as of 14:30, 13 June 2016

 
 
Dynamic memory management
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Allocators
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)



 
 
Defined in header <memory_resource>
template< class T >
class polymorphic_allocator;
(since C++17)

The class template std::pmr::polymorphic_allocator is an Template:concept 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

Member types

Member type definition
value_type T

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)(undeprecated in C++26)
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]

Non-member functions

(removed in C++20)
compare two polymorphic_allocators
(function) [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.

See also

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