On Wed, 4 Jun 2025, 12:05 Daniel Krügler, <daniel.krueg...@gmail.com> wrote:
> Am Mi., 4. Juni 2025 um 12:57 Uhr schrieb Tomasz Kaminski < > tkami...@redhat.com>: > >> >> >> On Wed, Jun 4, 2025 at 12:43 PM Daniel Krügler <daniel.krueg...@gmail.com> >> wrote: >> >>> Am Mi., 4. Juni 2025 um 11:27 Uhr schrieb Tomasz Kamiński < >>> tkami...@redhat.com>: >>> >>>> [...] >>>> + >>>> +template<typename Ret, typename Other> >>>> + requires std::is_integral_v<Other> >>>> +struct std::common_type<Rep<Ret>, Other> >>>> +{ >>>> + using type = Rep<Ret>; >>>> +}; >>>> + >>>> +template<typename Ret, typename Other> >>>> + requires std::is_integral_v<Other> >>>> +struct std::common_type<Other, Rep<Ret>> >>>> + : std::common_type<Rep<Ret>, Other> >>>> +{ }; >>>> >>> >>> Why is this second specialization needed? It seems to me >>> that [meta.trans.other] p5 says that it is already provided by the library >>> implementation of std::common_type. >>> >> My reading of the paragraph is different. It says that if one is >> specialized, we also need to specialize the other: >> > Moreover, common_type_t<T1, T2> shall denote the same type, if any, as >> does common_type_t<T2, T1>. >> <https://eel.is/c++draft/meta.trans.other#5.sentence-4> >> > No diagnostic is required for a violation of this Note's rules. >> <https://eel.is/c++draft/meta.trans.other#5.sentence-5> >> "shall" are requirements on the users. >> > > Yes you are right, sorry for the noise. > It's never just noise to know that other people are looking at patches and giving them additional review - thanks for checking! > > > > >