I know that it deprecated and removed only in std::allocator. And I can implement it on my own allocators. But why it is deprecated?
rebind
was a clunky, pre-C++11 way of taking an allocator type for T
and converting it into an allocator type for U
. I say "pre-C++11" because C++11 gave us a much more convenient way to do it: template aliases.
allocator_traits
template has a member template alias rebind<U>
that computes Allocator<U>
for the allocator it is a trait for. It can use the rebind
member of the allocator if it is available, otherwise, it just yields Allocator<U>
.
allocator_traits
effectively defines a lot of functionality that std::allocator
used to provide. This made a lot of members of std::allocator
redundant, so they have been deprecated and removed in favor of the traits
-based defaults.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With