根据cppreference,std :: basic_ostringstream可以使用自定义分配器进行实例化.从C++ 11开始,允许分配器具有状态,并且我的自定义分配器类确实具有内部每实例状态(实际上每个分配器实例都有一个指向MemPool类实例的指针,它转发所有分配请求).这就是为什么我的分配器类型不能简单地默认构造并且期望工作,因为毕竟,它将从哪里获取它应该使用的MemPool实例的地址?
不幸的是,如果你看看在构造函数原型的标准:: basic_ostringstream,你可以看到,没有任何支援的建设者的实际接受一个allocator实例!我很确定std :: basic_ostringstream必须进行一些分配来构造它的结果字符串,我真的希望它使用我的分配器来做那些,但如果我没办法怎么办呢?告诉它使用哪个特定的MemPool实例?
我在这里忽略了什么吗?我觉得我必须拥有,但我肯定不会看到此刻的情况.
LWG 缺陷 #2210 (将分配器实例添加到许多标准库容器的构造函数)的解决方案可能不够彻底,并且忽略了流。或者也许还不够清楚如何接近他们。我建议提交一份新的库缺陷报告(或者可能首先在std-discussion中询问)
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |