cpp/memory/scoped allocator adaptor

The class template is an allocator which can be used with multilevel containers (vector of sets of lists of tuples of maps, etc). It is instantiated with one outer allocator type and zero or more inner allocator types. A container constructed directly with a uses  to allocate its elements, but if an element is itself a container, it uses the first inner allocator. The elements of that container, if they are themselves containers, use the second inner allocator, etc. If there are more levels to the container than there are inner allocators, the last inner allocator is reused for all further nested containers.

The purpose of this adaptor is to correctly initialize stateful allocators in nested containers, such as when all levels of a nested container must be placed in the same shared memory segment. The adaptor's constructor takes the arguments for all allocators in the list, and each nested container obtains its allocator's state from the adaptor as needed.

For the purpose of, if the next inner allocator is , any class for which  participates in the recursion as if it was a container. Additionally, std is treated as such a container by specific overloads of.

Typical implementation holds an instance of a as a member object.