为什么c++中的分配器为void类型提供专门化?

Why does allocator in c++ provide specialization for type void

本文关键字:类型 专门化 void c++ 分配器 为什么      更新时间:2023-10-16

我注意到c++中的分配器为void类型提供了专门化。这样做有什么特殊的目的吗?为void类型分配内存是没有意义的,对吧?

这篇由Matt Austern撰写的旧Standard Librarian专栏对分配器进行了相当全面的讨论,包括以下内容:

我们该如何处理void?有时容器必须引用void指针和重新绑定机制几乎提供了我们需要的东西,但是不完全是。它不起作用,因为我们需要写一些东西像malloc_allocator::pointer,我们已经定义了Malloc_allocator以这样的方式为void实例化它非法的。它使用sizeof(T),它指的是T&;两者都不合法T是空的。解决方案和问题一样简单:专门化malloc_allocator for void,除了空的引用void指针所需的最小值

malloc_allocator是Austern在示例中使用的示例实现,但它适用于一般情况。

分配器需要专门用于void,因为您不能引用void