相关:Deprecation of std::allocator<void>。
找到std::vector
和std::list
的模板参数Allocator
的以下说明(强调我的):
用于获取/释放内存和分配器的分配器 构造/销毁该内存中的元素。类型必须满足 分配器的要求。 行为未定义,如果
Allocator::value_type
与T
不同。
最后一句话对我没有意义。如果需要特定的value_type
,那么它不能只重新分配一个分配器吗?
答案 0 :(得分:1)
原因主要是历史 - 重新绑定在C ++ 11添加var
之前更加复杂。 Networking TS定义了一个“proto-allocator”概念([async.reqmts.proto.allocator]),其中重新绑定总是在任何使用之前应用,因此似乎有一天需要放宽该要求。