在c ++ 17之前,如果您有类似Allocator<typename, size_t>
的分配器,则可以使用rebind结构。
但是现在,在C ++ 17中,不推荐使用rebind结构。
从allocator<T,size_t>
构造allocator<T2, size_t>
的解决方案是什么?
答案 0 :(得分:4)
仅弃用std::allocator
的{{1}}成员模板。如果您使用自己的类,则仍可以定义rebind
。
通过std::allocator_traits
进行操作,例如:
rebind
{{1}的using AllocatorForU = std::allocator_traits<AllocatorForT>::template rebind_alloc<U>;
的默认值是rebind_alloc
,它对AllocatorTemplate<T, OtherTypes...>
有用,这就是不推荐使用AllocatorTemplate<U, OtherTypes...>
的原因。您必须为您的类定义它,因为它具有非类型模板参数。
答案 1 :(得分:2)