繁体   English   中英

通过 EBCO 继承分配器时复制 C++ 个分配器

[英]Copying C++ allocators when allocator is inherited via EBCO

如果容器通过 EBCO(空基 class 优化)获得它的分配器函数,例如:

template <class T, class allocator = std::allocator<T>>
class a_container : private allocator;

当该容器将另一个容器复制到其中,而另一个容器的分配器不等效(或为空)时会发生什么? 如果新分配器有 state,如果目标容器的分配器是无状态的,那么 state 是如何复制到目标容器中的? 如果使用 EBCO,实际的 class 似乎没有空间来存储 state。

其次,分配器的复制是如何进行的? static_cast<allocator &>(*this) = source.get_allocator(); 合理的?

当该容器将另一个容器复制到其中,而另一个容器的分配器不等效时会发生什么?

编译时错误。 std::vector<T, std::allocator<T>>不可分配给std::vector<T, some_other_allocator<T>> ,它们是不同的类。

其次,分配器的复制是如何进行的?

与任何其他可简单复制的子对象相同。 object表示的0字节被复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM