We iterated the patched on the force:
https://forge.sourceware.org/gcc/gcc-TEST/pulls/54/files
The version present there now LGTM.

On Mon, Jun 9, 2025 at 12:16 PM Tomasz Kaminski <tkami...@redhat.com> wrote:

>
>
> On Fri, Jun 6, 2025 at 9:07 AM Giuseppe D'Angelo <
> giuseppe.dang...@kdab.com> wrote:
>
>> Hi Tomasz,
>>
>> Thank you for reviewing the original patch!
>>
>> I'm attaching a second version, hopefully addressing what you've
>> highlighed. I've also pushed it on Forge:
>>
>> https://forge.sourceware.org/gcc/gcc-TEST/pulls/52
>
> Posted review there, but major change is, for type that are wrappers over
> integer:
>   * use hash<Integer> to hash a value, instead of jus returning it
>   * specialize __is_fash_hash as true for them.
>
>>
>>
>>
>> On 24/04/2025 15:30, Tomasz Kaminski wrote:
>> > Hi,
>> >
>> > I am reattaching the original patch below, as I wasn't on the mailing
>> > list when it was sent.
>> > Thank you for submitting the patch and apologies for the late response.
>> >
>> > The major comment I have is that these are new C++26 classes, so we can
>> > use requires __is_hash_enabled_for<_Tp> and define only enabled
>> > specialization. In other cases we will be using a primary template that
>> > is disabled.
>> >
>> > Also, argument_type and result_type typedefs are no longer present
>> since
>> > C++20, so you can remove them, and also remove __hash_base base classes
>> > that were responsible for providing them.
>>
>> Sounds good to me, I've done this cleanup.
>>
>> > +
>> >  > +    template<typename _Arg, typename... _Args>
>> >  > +      static size_t __hash(const _Arg& __arg, const _Args&...
>> __args)
>> >  > +      {
>> >  > + const size_t __arg_hash = hash<_Arg>{}(__arg);
>> >  > + size_t __result = _Hash_impl::hash(__arg_hash);
>> > ## COMMENT
>> > I think you can implement this using fold expression, as:
>> > (_Hash_impl::__hash_combine(hash<_Arg>{}(__args), __result), ...);
>>
>> Ok, I just wanted to make it work on C++11, but there's no real need for
>> that I guess...
>>
>> >  > + __hash_combine(__result, __args...);
>> >  > + return __result;
>> >  > +      }
>> >  > +  };
>> >  > +#endif // C++11
>> >  > +
>>
>> Thank you,
>>
>> --
>> Giuseppe D'Angelo
>>
>

Reply via email to