On Mon, 13 May 2024 at 05:34, François Dumont <frs.dum...@gmail.com> wrote:
>
>      libstdc++: [_Hashtable] Fix some implementation inconsistencies
>
>      Get rid of the different usages of the mutable keyword except in
>      _Prime_rehash_policy where it is preserved for abi compatibility
> reason.
>
>      Fix comment to explain that we need the computation of bucket index
> noexcept
>      to be able to rehash the container when needed.
>
>      For Standard instantiations through std::unordered_xxx containers
> we already
>      force caching of hash code when hash functor is not noexcep so it
> is guarantied.
>
>      The static_assert purpose in _Hashtable on _M_bucket_index is thus
> limited
>      to usages of _Hashtable with exotic _Hashtable_traits.
>
>      libstdc++-v3/ChangeLog:
>
>              * include/bits/hashtable_policy.h
> (_NodeBuilder<>::_S_build): Remove
>              const qualification on _NodeGenerator instance.
> (_ReuseOrAllocNode<>::operator()(_Args&&...)): Remove const qualification.
>              (_ReuseOrAllocNode<>::_M_nodes): Remove mutable.
>              (_Insert_base<>::_M_insert_range): Remove _NodeGetter const
> qualification.
>              (_Hash_code_base<>::_M_bucket_index(const
> _Hash_node_value<>&, size_t)):
>              Simplify noexcept declaration, we already static_assert
> that _RangeHash functor
>              is noexcept.
>              * include/bits/hashtable.h: Rework comments. Remove const
> qualifier on
>              _NodeGenerator& arguments.
>
> Tested under Linux x64, ok to commit ?


OK for trunk, thanks.

Reply via email to