繁体   English   中英

为什么 rebind <U>::other 在 C++17 中被弃用并在 C++20 中被删除?</u>

[英]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.

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