当前位置 : 主页 > 编程语言 > c++ >

如何避免在分配器中重新绑定c 17

来源:互联网 收集:自由互联 发布时间:2021-06-23
在c 17之前,如果你有一个分配器,如Allocator typename,size_t你可以使用rebind结构. 但现在,在C 17中,重新绑定结构已被弃用. 构建分配器的解决方案是什么 T,size_t来自分配器 T2,size_t? 仅弃用st
在c 17之前,如果你有一个分配器,如Allocator< typename,size_t>你可以使用rebind结构.
但现在,在C 17中,重新绑定结构已被弃用.
构建分配器的解决方案是什么< T,size_t>来自分配器< T2,size_t>? 仅弃用std :: allocator的重新绑定成员模板.如果您使用自己的类,仍然可以定义重新绑定.

通过std::allocator_traits执行,如:

using AllocatorForU = std::allocator_traits<AllocatorForT>::template rebind_alloc<U>;

AllocatorTemplate< T,OtherTypes ...>的rebind_alloc的默认值是AllocatorTemplate< U,OtherTypes ...>,适用于std :: allocator,这就是为什么不推荐使用std :: allocator< T> :: rebind的原因.您必须为您的类定义它,因为它具有非类型模板参数.

网友评论