On Tue, 21 Mar 2023 at 16:41, Ken Matsui via Libstdc++ < libstd...@gcc.gnu.org> wrote:
> This patch lets libstdc++ use new built-in trait __is_unsigned. > > libstdc++-v3/ChangeLog: > > * include/std/type_traits (is_unsigned): Use __is_unsigned > built-in trait. > Please wrap the ChangeLog entry to less than 80 columns (including 8 for the leading tab). > --- > libstdc++-v3/include/std/type_traits | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/libstdc++-v3/include/std/type_traits > b/libstdc++-v3/include/std/type_traits > index 2bd607a8b8f..8d5a05cd0a6 100644 > --- a/libstdc++-v3/include/std/type_traits > +++ b/libstdc++-v3/include/std/type_traits > @@ -884,10 +884,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > { }; > > /// is_unsigned > +#if __has_builtin(__is_unsigned) > + template<typename _Tp> > + struct is_unsigned > + : public __bool_constant<__is_unsigned(_Tp)> > + { }; > +#else > template<typename _Tp> > struct is_unsigned > : public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>>::type > { }; > +#endif > Thanks, I expect this trait to make a much bigger difference than add_const, so I'm very happy to see this one! > > /// @cond undocumented > template<typename _Tp, typename _Up = _Tp&&> > -- > 2.40.0 > >