SG::ArenaHandleBaseAllocT< ALLOC > Node1 SG::ArenaHandleBaseAlloc T< ALLOC > + ArenaHandleBaseAllocT() + ArenaHandleBaseAllocT() + ArenaHandleBaseAllocT() + params() # allocator() # allocator() # makeIndex() Node2 SG::ArenaHandleBase + ArenaHandleBase() + ArenaHandleBase() + ArenaHandleBase() + reset() + erase() + reserve() + stats() # baseAllocator() # baseAllocator() Node2->Node1 Node3 SG::LockedAllocator + LockedAllocator() + operator*() + operator->() + get() + get() Node3->Node2 -m_allocator Node4 std::unique_lock< std ::mutex > Node4->Node3 -m_lock Node5 std::mutex Node5->Node4 +ptr Node6 SG::ArenaAllocatorBase + ~ArenaAllocatorBase() + reset() + erase() + reserve() + stats() + name() + report() + makeConstructor() + makeConstructor() + makeDestructor() + makeDestructor() + makeClear() + makeClear() - construct_fcn() - destroy_fcn() - clear_fcn() Node6->Node3 -m_alloc