Sticking a container to a single memory resource
The next hat worn by the standard allocator model--the next feature controlled by std::allocator_traits
--is the ability to associate specific container objects with specific heaps. We used three bullet points to describe this feature earlier:
- Associate a container object with a particular memory resource, and make sure that association is "sticky"--this container object will always use the given heap for its allocations.
- Associate a container value with a particular memory resource, meaning that the container can be efficiently moved around using value semantics without forgetting how to deallocate its contents.
- Choose between the two mutually exclusive behaviors just mentioned.
Let's look at an example, using std::pmr::monotonic_buffer_resource
for our resource but using a hand-written class type for our allocator type. (Just to reassure you that you haven't missed anything: Indeed, we still haven't covered any standard-library-provided allocator...