[PATCH][Hashtable 5/6] Remove H1/H2 template parameters

Jonathan Wakely jwakely@redhat.com
Fri Jul 17 10:51:48 GMT 2020


On 19/11/19 00:10 +0200, Ville Voutilainen wrote:
>On Mon, 18 Nov 2019 at 23:41, François Dumont <frs.dumont@gmail.com> wrote:
>> >   Also, is
>> > this ABI-compatible
>> > for our unordered containers?
>> >
>> IMHO, yes it is.
>>
>> In hashtable_policy.h _H1 was the user hash which I renamed in _Hash,
>> the same template name that for unordered containers.
>>
>> _H2 was always _Mod_range_hashing and previous _Hash always
>> _Default_ranged_hash, both stateless types. Only _H1 and _H2 were stored
>> in _Hash_code_base for instance. _H1 is still as _Hash and _H2 was just
>> empty and moreover stored last so removing it has no impact.
>
>Right, and as I understood the code, it's all empty base objects
>anyway, so it boils down to whether
>a set of empty bases can change without causing an ABI break, and I
>don't think there's an ABI
>problem here because the actual _Hashtable is stored as a member of
>various containers, and its
>size doesn't change, and based on what you wrote, with which my
>code-reading agrees, the behaviour
>doesn't change either. So the patch seems okay to me.

There's no guarantee that a program-defined hash object is actually
empty.



More information about the Libstdc++ mailing list