C++ 分配器来存储不同类型的对象

问题描述

我有一堆由 unique_ptrs 包裹的对象。
每个对象都有自己的类型。
我想创建一种内存池来存储所有这些对象,以避免为每个最后一个对象分配堆。像这样:

分配器分配器(1024); // 应该是可扩展的
unique_ptr a = allocator.allocateAndWrapToUPtr();
unique_ptr b = allocator.allocateAndWrapToUPtr();
C* c = allocator.allocate();

据我所知,分配器被指定为
模板
类 MyAllocator;
因此它们只能存储一种类型的对象。

是否可以实现“多类型”分配器?

解决方法

不可能在项目的任何地方都使用一个分配器。 动态分配器示例可以在 dmitrysoshnikov.com/compilers/writing-a-pool-allocator 中找到,它允许使用 unique_ptrs 解决初始问题。
但它不符合 stl,因此不能用于例如集合。