![](/img/trans.png)
[英]Why is `std::reference_wrapper` deprecated in c++17 and removed in c++20?
[英]Why rebind<U>::other are deprecated in C++17 and removed in C++20?
我知道它只在 std::allocator 中被弃用和删除。 我可以在我自己的分配器上实现它。 但为什么它被弃用?
rebind
是一种笨拙的 C++11 之前的方法,它采用T
的分配器类型并将其转换为U
的分配器类型。 我说“pre-C++11”是因为 C++11 给了我们一个更方便的方法:模板别名。
allocator_traits
模板有一个成员模板别名rebind<U>
,它为它是一个特征的分配器计算Allocator<U>
。 如果可用,它可以使用分配器的rebind
成员,否则,它只会产生Allocator<U>
。
allocator_traits
有效地定义了许多std::allocator
过去提供的功能。 这使得std::allocator
的许多成员变得多余,因此它们已被弃用并删除以支持基于traits
的默认值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.