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

Lin*_*gxi 5 c++ containers std allocator language-lawyer

相关:弃用 std::allocator<void>

Allocator都可以找到以下关于模板参数的描述(强调我的):std::vectorstd::list

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

最后一句话对我来说没有意义。如果value_type需要特定的内容,难道不能重新绑定分配器吗?

Dav*_*ing 1

原因主要是历史\xe2\x80\x94在C++11添加之前重新绑定更加复杂allocator_traits。Networking TS定义了 \xe2\x80\x9cproto-allocator\xe2\x80\x9d 概念([async.reqmts.proto.allocator]),其中在任何使用之前始终应用重新绑定,因此似乎可能会放宽要求有一天。

\n