From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe2b.google.com (mail-vs1-xe2b.google.com [IPv6:2607:f8b0:4864:20::e2b]) by sourceware.org (Postfix) with ESMTPS id 2110C3851142 for ; Mon, 20 Mar 2023 08:08:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2110C3851142 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cs.washington.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cs.washington.edu Received: by mail-vs1-xe2b.google.com with SMTP id by13so9712240vsb.3 for ; Mon, 20 Mar 2023 01:08:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.washington.edu; s=goo201206; t=1679299685; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=68DoWhMzOw3A7aFsgbaGqbnKQkoPOYa731jTpulZRRg=; b=BdLoxExFSoLEjhBzICzPvPM0HsYW6A5rH8W9bS6wLcVz22Og73awnW8Xfos4MEiNMZ 4fCHCaa0Ml2HnIKlZaRhIeodEFRWxOHTiaqRkUBVFuVBjKQZpiTevX68BjyIFJLzrL+M oj1w4Y057mDtloLYtIJIIJoWyH+DMFL3zndsY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679299685; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=68DoWhMzOw3A7aFsgbaGqbnKQkoPOYa731jTpulZRRg=; b=ymMyWmZ7rCzBKTl+cHp+KfFyuUIJNl5OHCwArnVK+dL619nLep3SL96FvYH7Tt39Fr SZPOEv3xE31UB/5boRFLup+FXdvvt9KtrdnDOrX56K6zGs5pj1n6V5ggCqxaGNEqUt5U ZvFxtxtNydB29wM2o6Q9qUbN3mALKe0fcwSrhsBj67WZInLw2tkszd/l5pHkgQ9q/0Py GGtG4pFFKlMz8U+yaR45UijQh3GlClhCQl3PdpZg52M5TeurfEPX2OISZVfeXv27yxoZ Dkzn93QlVDR5SavDEJZChSvGbdWazeNb8v2bPzru3QW7YpHW3yXjKn3c83xRbHqTb+j3 QUaQ== X-Gm-Message-State: AO0yUKU/VDH9nZ3+tQti//6MWLMJkqtr1VWx27JauDQwghB1KfwMjAVC RMwTb8zy2pXoUSz04GxbBh6dNN2wtrgvXfuL/7R6xw== X-Google-Smtp-Source: AK7set/NKzI9mGPBZxh8Qelw3i1l6EpfSENf4PxHeHnJmXzTmQ2QkZNIl1okOwTB6LzO0RlyB9i/VlEEi80q/skIejA= X-Received: by 2002:a67:c291:0:b0:425:d4cb:3078 with SMTP id k17-20020a67c291000000b00425d4cb3078mr3630699vsj.6.1679299685478; Mon, 20 Mar 2023 01:08:05 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ken Matsui Date: Mon, 20 Mar 2023 01:07:54 -0700 Message-ID: Subject: Re: [PATCH] libstdc++: use new built-in trait __remove_pointer To: Jonathan Wakely Cc: gcc-patches , Patrick Palka , "libstdc++" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Ooh... Thank you for pointing that out! > The helper doesn't need to be defined for the case where we don't use it. I thought that macroing them out leads to compiler errors since users are possibly using those helpers. But do we not have to care about that? --- libstdc++-v3/ChangeLog: * include/std/type_traits (remove_pointer): Use __remove_pointer built-in t= rait. --- diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 2bd607a8b8f..cba98091aad 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2025,17 +2025,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct __remove_pointer_helper - { typedef _Tp type; }; + { using type =3D _Tp; }; template struct __remove_pointer_helper<_Tp, _Up*> - { typedef _Up type; }; + { using type =3D _Up; }; /// remove_pointer +#if __has_builtin(__remove_pointer) + template + struct remove_pointer + { using type =3D __remove_pointer(_Tp); }; +#else template struct remove_pointer : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>> { }; +#endif template struct __add_pointer_helper On Mon, Mar 20, 2023 at 12:57=E2=80=AFAM Jonathan Wakely wrote: > > > > On Mon, 20 Mar 2023, 07:32 Ken Matsui via Libstdc++, wrote: >> >> CCing libstdc++@gcc.gnu.org. >> >> On Sun, Mar 19, 2023 at 7:53=E2=80=AFPM Ken Matsui wrote: >> > >> > libstdc++-v3/ChangeLog: >> > >> > * include/std/type_traits (is_reference): Use __remove_pointer built-i= n trait. > > > The changelog entry says is_reference but the patch is for remove_pointer= . > > >> > >> > --- >> > diff --git a/libstdc++-v3/include/std/type_traits >> > b/libstdc++-v3/include/std/type_traits >> > index 2bd607a8b8f..cba98091aad 100644 >> > --- a/libstdc++-v3/include/std/type_traits >> > +++ b/libstdc++-v3/include/std/type_traits >> > @@ -2025,17 +2025,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> > >> > template >> > struct __remove_pointer_helper >> > - { typedef _Tp type; }; >> > + { using type =3D _Tp; }; >> > >> > template >> > struct __remove_pointer_helper<_Tp, _Up*> >> > - { typedef _Up type; }; >> > + { using type =3D _Up; }; > > > The helper doesn't need to be defined for the case where we don't use it. > > >> > >> > /// remove_pointer >> > +#if __has_builtin(__remove_pointer) >> > + template >> > + struct remove_pointer >> > + { using type =3D __remove_pointer(_Tp); }; >> > +#else >> > template >> > struct remove_pointer >> > : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>> >> > { }; >> > +#endif >> > >> > template >> > struct __add_pointer_helper