
In order to make the constructors more efficient, especially in the context of C++11 move semantics, the (dynamic) allocations in MemoryPoolAllocator and Stack should be performed lazily. Move the allocations to the first use of the allocator in both classes.