为什么标准容器需要allocator_type :: value_type作为元素类型?

时间:2018-05-09 03:53:44

标签: c++ containers language-lawyer c++-standard-library allocator

相关:Deprecation of std::allocator<void>

找到std::vectorstd::list的模板参数Allocator的以下说明(强调我的):

  

用于获取/释放内存和分配器的分配器   构造/销毁该内存中的元素。类型必须满足   分配器的要求。 行为未定义,如果   Allocator::value_typeT 不同。

最后一句话对我没有意义。如果需要特定的value_type,那么它不能只重新分配一个分配器吗?

1 个答案:

答案 0 :(得分:1)

原因主要是历史 - 重新绑定在C ++ 11添加var之前更加复杂。 Networking TS定义了一个“proto-allocator”概念([async.reqmts.proto.allocator]),其中重新绑定总是在任何使用之前应用,因此似乎有一天需要放宽该要求。