custom allocator with std::map