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...