> but one could also consider using a plain old std::vector with a custom
> std::allocator.
Doesn't work since it isn't guaranteed that a container doesn't do
a typename std::allocator_traits<Old>::template rebind_alloc<New>
to do multiple allocations of different type on one container. I
wrote a custom allocator some time ago which mapped to mmap() or
VirtualAlloc() but I found that the std::vector<T>-implementation
of MSVC does a rebind_alloc and has an additional allocation.
So alllocators simply must support full heap-semantics to be
compatible to containers.