我注意到C++中的分配器为void类型提供了特化。这样做有什么特殊目的吗?分配void类型的内存好像没有意义,对吧?
malloc_allocator是Austern在他的示例中使用的样例实现,但对于一般情况仍然适用。我们该如何处理void?有时容器必须引用void指针,而重新绑定机制几乎可以提供我们所需的内容,但却不完全适用。它行不通,因为我们需要编写类似于malloc_allocator :: pointer的东西,而我们已经定义了malloc_allocator,使得对void进行实例化是非法的。它使用sizeof(T),并引用T&;当T为void时,两者都是非法的。解决方案与问题一样简单:为void专门化malloc_allocator,省略除了最基本的引用void指针之外的所有内容。
分配器需要为void
进行特化,因为无法引用void
。
void
实例化它,那只会成为一个问题,不是吗? - Owen