[PATCH] PR libstdc++/92124 on hashtable
François Dumont
frs.dumont@gmail.com
Thu Nov 7 19:28:00 GMT 2019
From what I understood from recent fix the unordered containers need to
be updated the same way.
I hope you'll appreciate the usage of rvalue forwarding. Containers node
values are moved as soon as _M_assign is called with a rvalue reference
to the source container.
Additionnaly this patch removes usages of lambdas in _Hashtable.
If you confirm it I'll check for the same on _Rb_tree.
   * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
   template alias.
   (_Hashtable<>::__mv_if_value_type_mv_noexcept): New.
   (_Hashtable<>::__fwd_value): New.
   (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
   parameter.
   (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
   (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
   (_Hashtable<>::_M_move_assign): Adapt.
   (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
   (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
   Adapt.
   (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
   Adapt.
   * testsuite/23_containers/unordered_set/92124.cc: New.
Tested under Linux x86_64.
Ok to commit ?
François
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hashtable_92124.patch
Type: text/x-patch
Size: 8927 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20191107/6339a421/attachment.bin>
More information about the Libstdc++
mailing list