On Wed, 13 May 2026 at 13:32, Jonathan Wakely <[email protected]> wrote:
>
> On Wed, 13 May 2026 at 12:57, Tomasz Kamiński <[email protected]> wrote:
> >
> > Als uses type_identity_t in operator<=> signature to make it consistient
> > with operator==.
> >
> > libstdc++-v3/ChangeLog:
> >
> >         * include/std/string_view: Add _GLIBCXX_RESOLVE_LIB_DEFECTS
> >         comment for LWG3950.
> >         (operator<=>): Use type_identity_t instead of __type_identity_t.
> > ---
> > The consistency change technically changes signature, but that is fine,
>
> See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114400

I'm not sure why I only changed operator== because I think a similar
testcase could be contrived for operator<=>. That would suggest that
the change is required, not just a bit tidier.


>
> > not sure if it is worth it. Should we make __type_identity an alias to
> > type_identity for modes when later is defined.
> >
> > Tested on x86_64-linux. OK for trunk?
> >
> >  libstdc++-v3/include/std/string_view | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/libstdc++-v3/include/std/string_view 
> > b/libstdc++-v3/include/std/string_view
> > index 735d46f2de7..efbf432f112 100644
> > --- a/libstdc++-v3/include/std/string_view
> > +++ b/libstdc++-v3/include/std/string_view
> > @@ -621,6 +621,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >    // type (see N3766).
> >
> >  #if __cpp_lib_three_way_comparison
> > +  // _GLIBCXX_RESOLVE_LIB_DEFECTS
> > +  // 3950. std::basic_string_view comparison operators are overspecified
> > +
> >    template<typename _CharT, typename _Traits>
> >      [[nodiscard]]
> >      constexpr bool
> > @@ -633,7 +636,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >      [[nodiscard]]
> >      constexpr auto
> >      operator<=>(basic_string_view<_CharT, _Traits> __x,
> > -               __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
> > +               type_identity_t<basic_string_view<_CharT, _Traits>> __y)
> >      noexcept
> >      -> decltype(__detail::__char_traits_cmp_cat<_Traits>(0))
> >      { return __detail::__char_traits_cmp_cat<_Traits>(__x.compare(__y)); }
> > --
> > 2.54.0
> >

Reply via email to