BumpAllocator - Fast O(1) allocator.
Allocates items sequentially in memory, with underlying memory allocated in blocks as needed. Individual items cannot be deallocated; the entire thing must be destroyed to release the memory.
template<typename T, typename... Args>
BumpAllocator:: emplace(Args && ... args)
Construct a new item using the allocator. NOTE: the type of object being created must be trivially destructible, since the allocator won't run destructors when freeing memory.