[{"id":3683531,"web_url":"http://patchwork.ozlabs.org/comment/3683531/","msgid":"<CACb0b4=uBuvYevJPvAiPczD96Rbs=AHWGYW1NZRJuzyZKX4ALg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-28T15:04:04","subject":"Re: [PATCH] libstdc++: Make pointer_traits::pointer_to constexpr for\n main template.","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Tue, 28 Apr 2026 at 15:41, Tomasz Kamiński <tkaminsk@redhat.com> wrote:\n>\n> This resolves LWG3454, \"pointer_traits::pointer_to should be constexpr\",\n> accepted in Kona 2025.\n>\n> The change is applied since C++20, i.e. standard in which pointer_to\n> was made constexpr for T* specialization.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         * include/bits/ptr_traits.h (__ptr_traits_ptr_to::pointer_to):\n>         Define as constexpr since C++20.\n>         * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc:\n>         New test for custom pointer-like type.\n> ---\n> Tested on x86_64-linux locally. OK for trunk?\n\nOK\n\n\n>\n>  libstdc++-v3/include/bits/ptr_traits.h             |  4 +++-\n>  .../20_util/pointer_traits/pointer_to_constexpr.cc | 14 ++++++++++++++\n>  2 files changed, 17 insertions(+), 1 deletion(-)\n>\n> diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h\n> index df83e0cad1d..c1dc76509ce 100644\n> --- a/libstdc++-v3/include/bits/ptr_traits.h\n> +++ b/libstdc++-v3/include/bits/ptr_traits.h\n> @@ -97,13 +97,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>        using pointer = _Ptr;\n>        using element_type = _Elt;\n>\n> +      // _GLIBCXX_RESOLVE_LIB_DEFECTS\n> +      // 3454. pointer_traits::pointer_to should be constexpr\n>        /**\n>         *  @brief  Obtain a pointer to an object\n>         *  @param  __r  A reference to an object of type `element_type`\n>         *  @return `pointer::pointer_to(__r)`\n>         *  @pre `pointer::pointer_to(__r)` is a valid expression.\n>        */\n> -      static pointer\n> +      static _GLIBCXX20_CONSTEXPR pointer\n>        pointer_to(element_type& __r)\n>  #if __cpp_lib_concepts\n>        requires requires {\n> diff --git a/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc b/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc\n> index cfd35f899c4..929d004fd4a 100644\n> --- a/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc\n> +++ b/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc\n> @@ -24,3 +24,17 @@ static_assert( std::pointer_traits<int*>::pointer_to(i) == &i );\n>\n>  struct X { } x;\n>  static_assert( std::pointer_traits<X*>::pointer_to(x) == &x );\n> +\n> +template<typename T>\n> +struct Ptr\n> +{\n> +  T* value;\n> +\n> +  constexpr static Ptr\n> +  pointer_to(T& t) { return Ptr{&t}; }\n> +\n> +  friend bool operator==(Ptr, Ptr) = default;\n> +};\n> +\n> +static_assert( std::pointer_traits<Ptr<int>>::pointer_to(i) == Ptr<int>{&i} );\n> +static_assert( std::pointer_traits<Ptr<X>>::pointer_to(x) == Ptr<X>{&x} );\n> --\n> 2.53.0\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=J+Sw1F7b;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=J+Sw1F7b","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4kJD4PSMz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 01:04:55 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 0D5044BB8F6B\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 15:04:52 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 060C74B920A4\n for <gcc-patches@gcc.gnu.org>; Tue, 28 Apr 2026 15:04:24 +0000 (GMT)","from mail-pg1-f200.google.com (mail-pg1-f200.google.com\n [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-561-0nNaovwvP42nYbom2_MSZw-1; Tue, 28 Apr 2026 11:04:22 -0400","by mail-pg1-f200.google.com with SMTP id\n 41be03b00d2f7-b630753cc38so15060459a12.1\n for <gcc-patches@gcc.gnu.org>; Tue, 28 Apr 2026 08:04:22 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 0D5044BB8F6B","OpenDKIM Filter v2.11.0 sourceware.org 060C74B920A4"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 060C74B920A4","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 060C74B920A4","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777388665; cv=none;\n b=K5kL3lUatC18GHx7t84mK5FYZBEVkjVMHD+IiFyt0AySGPwHuTbTD7IZbRKV+AANEujmuT2VvGLncJ0t83Z/6BBjNl/VFrHJV8CD9SqDQDf2DLaAXvdXrtrX5MMHJPPto0hGDQDtfLHKaE3QIRzcchbSz3SZ1hvxOPz98iG14dc=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777388665; c=relaxed/simple;\n bh=lZVHz2LvQyCB0huInx0V+wKINUDxbvNg1IUJ2EHaeVI=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=IoQfBqJ4KsQ2yifFAaICNiMjBappNRECoD+tumetNSeQaUyU6GJKoIjTfJrdlSw2ZuRh3CDr7tSElstrZcZDKm40o5k4sNGqswCuAA2MvCn8195aN1FEDiunpAdexw+8XL6bOEcjyi+A53QEztqPYXT5K/P7g7fAxVlvrgXvm9k=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777388664;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=F9NE5Ai8/H1mXXa/D9pDwXsnM69nzsKojWFYGd1zJkw=;\n b=J+Sw1F7bbjetgZbbTNETGQx+8+fFbe0eqy91+bHNknW2rkgRRPM0fAol5KgH6hnlYQx7H1\n zq34hqtHYVLnhf5Dxhs6z1GBxM62+L+uu6q9s1Zq2evLQLbjw1aRYluNF3AAsY4irjjx3I\n Mx/RguFApQtA2pL7zcUyOruAR6MPskE=","X-MC-Unique":"0nNaovwvP42nYbom2_MSZw-1","X-Mimecast-MFC-AGG-ID":"0nNaovwvP42nYbom2_MSZw_1777388661","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777388661; x=1777993461;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=F9NE5Ai8/H1mXXa/D9pDwXsnM69nzsKojWFYGd1zJkw=;\n b=eX30IHc6Cu5zzJGC5bYP5CshPSxuaRwMD76eLY7mwmPjpwp2eHjUewjMdE1rH/C1ip\n ULwYjCZ0pq8JtqvqAstKto4Makwc4H5RblJjOFSCbM9c5SNaZHjHrsWNoWMRSU31j8yf\n lCY+2sB0dUeOHyvGN6l/WyxhaTxxXCHtYgNCNJxIxo2eWSTwyQgHTCaYogzhl2HvyNhF\n EO6SdFK1fGFvIXd7HiZC5Z/osr7r6M8QLuu+NvAPoW7keQn1k4p2DJiyviwlfTLs1tvu\n S3g6Ovt+O0oPJJ8dRgEa7P5Xl7ZR5LhyB8BTGHo4J/uHkHDJc+v77q2Ua7Xp+ey3a0y7\n 7GBg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ86LWRlvgDntGfcg1cGGae0vOSwaHHSwb8++I5N4/FHO91VO2fsm2/6puiPmsagoURmKp9dPKnpabEGdw==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YyXK4XlsTiIUCN7FvEKVhytTBN/nKmYBAE/5aOqJJkRe+fmL7aB\n 6rXO+C0AvDpoL5E/Qli9Ub934AnebO1D9bNUxh5+MwXq9HJXQ21dy6kBXWrtbqRMwGJYg6ZviED\n ow7Tw/93Ny0/CzzBqERSbCy609NR+5OoDj3tm5N+T4vmNMxheH9zxsbnLCmIcKR3UcYIo+SgKxG\n EFWnkAA8dZw2f8Z092y1bBZcn6eJb9vffZKw==","X-Gm-Gg":"AeBDievki6ov9wMYnwO52oOXlP/mZC4EMoaVNccqOcg3CGZTibYZegcP7i/wuuy3Cfi\n n69KnBXyeM8R/vTe18GiBklFpUZ3Zo72anyWeF0MjmHBS1Qxl3ksW/pPxuaqkl1cTuXxWQR3zhi\n tFDpX67RsB94blu4y6sl8547JjlxpafH50UOlk/a6/EcEXUXw2/C1Gy3MH1BxwnPvYgFe2+fjy3\n AMi0BOUp2ewyVox2ahsKgBKtC5JyVWTOJxfduy+5qlsOk2IoJEUDk1h8CFRQdNN+4rI5Ac8eO0J\n mA==","X-Received":["by 2002:a05:6a20:e290:b0:39b:dc44:eceb with SMTP id\n adf61e73a8af0-3a39c367a40mr4264160637.42.1777388661152;\n Tue, 28 Apr 2026 08:04:21 -0700 (PDT)","by 2002:a05:6a20:e290:b0:39b:dc44:eceb with SMTP id\n adf61e73a8af0-3a39c367a40mr4264080637.42.1777388660251; Tue, 28 Apr 2026\n 08:04:20 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260428144100.672367-1-tkaminsk@redhat.com>","In-Reply-To":"<20260428144100.672367-1-tkaminsk@redhat.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Tue, 28 Apr 2026 16:04:04 +0100","X-Gm-Features":"AVHnY4KsrPLysXyluqSRx2MDa_85SVhwgS9ceQf8R98yctMPkN3TKQ69ervIVAc","Message-ID":"\n <CACb0b4=uBuvYevJPvAiPczD96Rbs=AHWGYW1NZRJuzyZKX4ALg@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Make pointer_traits::pointer_to constexpr for\n main template.","To":"=?utf-8?q?Tomasz_Kami=C5=84ski?= <tkaminsk@redhat.com>","Cc":"libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"m6q7gDrpRbQdvN7l_VP9d6rqrim9jFhaKu1wcmQsKY4_1777388661","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]