[{"id":3678804,"web_url":"http://patchwork.ozlabs.org/comment/3678804/","msgid":"<CACb0b4=kmVE80zoJpq66XnFvouLALLg=8Qy5jivvcr8RrBcCHw@mail.gmail.com>","list_archive_url":null,"date":"2026-04-17T15:43:08","subject":"Re: [PATCH] libstdc++: Fix constraint recursion in std:indirect's\n operator== [PR124890]","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Fri, 17 Apr 2026 at 16:40, Patrick Palka <ppalka@redhat.com> wrote:\n>\n> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?\n\nOK, thanks.\n\n>\n> We can also just implement the Mandates as a static_assert as pointed\n> out by Lénárd.  Otherwise, I prefer this approach rather than the\n> forwarding reference approach since it's cleaner and we use this approach\n> in other parts of the library with no complaints so far.\n>\n> -- >8 --\n>\n> Like in r16-559 for std::expected, std::indirect's operator== is also\n> prone to constraint recursion due to CWG 2369.  This patch works around\n> the recursion in a similar manner.\n>\n>         PR libstdc++/124890\n>         PR libstdc++/119714\n>         PR libstdc++/112490\n>\n> libstdc++-v3/ChangeLog:\n>\n>         * include/bits/indirect.h (indirect::operator==): Replace\n>         non-dependent std::indirect function parameter with a\n>         dependent one of type indirect<_Tp2> where _Tp2 matches _Tp.\n>         * testsuite/std/memory/indirect/124890.cc: New test.\n> ---\n>  libstdc++-v3/include/bits/indirect.h                 | 4 ++--\n>  libstdc++-v3/testsuite/std/memory/indirect/124890.cc | 9 +++++++++\n>  2 files changed, 11 insertions(+), 2 deletions(-)\n>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n>\n> diff --git a/libstdc++-v3/include/bits/indirect.h b/libstdc++-v3/include/bits/indirect.h\n> index 2df46cc39a21..e1f7d1968b56 100644\n> --- a/libstdc++-v3/include/bits/indirect.h\n> +++ b/libstdc++-v3/include/bits/indirect.h\n> @@ -344,11 +344,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>             return __lhs.__get() == __rhs.__get();\n>         }\n>\n> -      template<typename _Up>\n> +      template<same_as<_Tp> _Tp2, typename _Up>\n>         requires (!__is_indirect<_Up>) // See PR c++/99599\n>           && requires (const _Tp& __t, const _Up& __u) { __t == __u; }\n>         friend constexpr bool\n> -       operator==(const indirect& __lhs, const _Up& __rhs)\n> +       operator==(const indirect<_Tp2>& __lhs, const _Up& __rhs)\n>         noexcept(noexcept(*__lhs == __rhs))\n>         {\n>           if (!__lhs._M_objp)\n> diff --git a/libstdc++-v3/testsuite/std/memory/indirect/124890.cc b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n> new file mode 100644\n> index 000000000000..ce44256f2244\n> --- /dev/null\n> +++ b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n> @@ -0,0 +1,9 @@\n> +// { dg-do compile { target c++26 } }\n> +\n> +// PR libstdc++/124890 - Circular constraint in std::indirect::operator==\n> +\n> +#include <memory>\n> +#include <vector>\n> +\n> +using I = std::vector<std::indirect<int>>::iterator;\n> +static_assert(std::totally_ordered<I>);\n> --\n> 2.54.0.rc1.54.g60f07c4f5c\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=fS/0B9hV;\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=fS/0B9hV","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 4fxzgw0g5Hz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 01:43:56 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 404634CCCA14\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 15:43:54 +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 EC74F4C318A4\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 15:43:26 +0000 (GMT)","from mail-yx1-f70.google.com (mail-yx1-f70.google.com\n [74.125.224.70]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-407-vc9zX9hrME-yUS1SaDwYgA-1; Fri, 17 Apr 2026 11:43:25 -0400","by mail-yx1-f70.google.com with SMTP id\n 956f58d0204a3-649df163c11so1266155d50.1\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 08:43:25 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 404634CCCA14","OpenDKIM Filter v2.11.0 sourceware.org EC74F4C318A4"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org EC74F4C318A4","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org EC74F4C318A4","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776440607; cv=none;\n b=wFYBb4EN1WVIqCnAO4LnP8qYW4ZtVhtCUXlkDdUdpfO7YqYw2Jjz32u3DBU6AkODr+Z/fH77Gx7a/kXSWJLC2JvbugGlwXXaHVWzV+e+cm9puOLlBMHR3SyBq0USEV2aIPy17wNc19MMphFxi9Evbb7AtKib9y707pXJF2TuG1I=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776440607; c=relaxed/simple;\n bh=gQ1I+ZdeNUkmZR6Xu3f3eUFiwl/Hi4O72TNyNqcjvBE=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=ejzpEhmE5+PGPQH957QsaCQnen2OR3obD4iMECjN462OaLHHhmyAFGl5DP2mFMB7yK43GwtghAfiXAdQRDmGP5qrDpm6Q1JybTLK6bDAj1CUetMyh331DxjRzbkAMYl0F5T+Uz0aUII3sjrprRMPWJaCXuLv8L+7B4yFGjR+de4=","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=1776440606;\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=w9Lf/gj7hbCmOp0CK9OVClvxrseiqg5aOwprqebi3DQ=;\n b=fS/0B9hVoujX0Fx6oANUdGdYKKpXzpyGug07+Y2ZvnMzHKEPQ7DIVr1vrtuygI1yOJ2au7\n rPBgUoS+r/3QFEzHUwepOMhmI6Q9xxaeX0c0G7L4KVlffmUSKFsfOHdag3TanshZNOzKnr\n WlonMeVbll0keRvPvGZnOgpUZHtu1D4=","X-MC-Unique":"vc9zX9hrME-yUS1SaDwYgA-1","X-Mimecast-MFC-AGG-ID":"vc9zX9hrME-yUS1SaDwYgA_1776440605","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776440605; x=1777045405;\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=w9Lf/gj7hbCmOp0CK9OVClvxrseiqg5aOwprqebi3DQ=;\n b=DWzaY9t4VKwZLy2tkySmm7PVGVkpCGVRDS+LApFqvC0f0Ycu2FqjfKS7evQUZjoRsL\n AFrzKbYU3ZQZTjLbU4/ASfaLpiR8lfpqxQoxXCqrvVc57+adcUeCAT2tnrn3AkpCOskd\n 8MTeC6sD0W3+qKgOV56NVJUUoJBj8kAGb0y/80jTp3Kllb0p8HN++mVme///DdNggFTY\n dERZyy/KKFlCUnlgU2l77CLNtiQ7bk+UTfRxGMI3cvkjkQJQHdzhRC7WDVkfIiaqeaDS\n IdlBfOO7FLES5lcUunGZu2eQ4kYc2WKB8LyJl6B/JFSaD16DQFbFa2HV1WvK1Zud1wA0\n 6UCA==","X-Gm-Message-State":"AOJu0YzOE6Ku+kS/T4JTCohgzIc9T9xFVf6V98cScND+3800m9Y72YBA\n fHN+OBBn6it8yc1kTeRHWp7OcBVzJZkMIMlkEm0divZcqWvSOJb7VyslRHoVCna12UhkD5z9sE2\n ZmH8zUe5zRZlRx/OKK7mfnDF13hP2IRDu82mE/zjbi4AxrjJmX+jo91wMafbmobZpZfenniKwOP\n Sjl6Fj5gxaBhbyOeLvK85ctTLi5LTQtRkzPQ==","X-Gm-Gg":"AeBDievGUfmphn3cNX59qKSsPcJRYDccdJcnA6sAW/lK0taD/FKaxQQiYwqNTrNB4q8\n 1YkK6T3DQ1lL1aoHWjEuDpAZpZFf5m16E6obtumwg9w1JqTUmbr84gzBBEBGJX7IfTjPkCDOPi3\n VP8jVUPqUEeOI5t3VKjjV1faH+FGusDBTJQM3vhTpXcKh9bzSzOZjFXL3jPnx3bwXwwv4+tLLMa\n WnBK3I5tx7GpeD7szX1KHOyEYEzG1LN7MW81r9BIS9/nlgyqUP+bzlo7k5ar/MF+RT3m/dDj2rJ\n /A==","X-Received":["by 2002:a53:e1ea:0:b0:650:367c:83a1 with SMTP id\n 956f58d0204a3-65310869b4dmr2222541d50.21.1776440604707;\n Fri, 17 Apr 2026 08:43:24 -0700 (PDT)","by 2002:a53:e1ea:0:b0:650:367c:83a1 with SMTP id\n 956f58d0204a3-65310869b4dmr2222520d50.21.1776440604149; Fri, 17 Apr 2026\n 08:43:24 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260417154009.1140472-1-ppalka@redhat.com>","In-Reply-To":"<20260417154009.1140472-1-ppalka@redhat.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Fri, 17 Apr 2026 16:43:08 +0100","X-Gm-Features":"AQROBzBPbmS0tVN52yZU0jE4QErN8pHaVLAd0jxaUoC4y8f_stECn4ytGaINfqQ","Message-ID":"\n <CACb0b4=kmVE80zoJpq66XnFvouLALLg=8Qy5jivvcr8RrBcCHw@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Fix constraint recursion in std:indirect's\n operator== [PR124890]","To":"Patrick Palka <ppalka@redhat.com>","Cc":"gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"130_BZhtrDqmrqxmWg0hEA3z46raBzY0or2SBdA6gpc_1776440605","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"}},{"id":3678841,"web_url":"http://patchwork.ozlabs.org/comment/3678841/","msgid":"<da08684d-6329-fef8-ac9e-69667a3a0f48@idea>","list_archive_url":null,"date":"2026-04-17T17:02:52","subject":"Re: [PATCH] libstdc++: Fix constraint recursion in std:indirect's\n operator== [PR124890]","submitter":{"id":78319,"url":"http://patchwork.ozlabs.org/api/people/78319/","name":"Patrick Palka","email":"ppalka@redhat.com"},"content":"On Fri, 17 Apr 2026, Jonathan Wakely wrote:\n\n> On Fri, 17 Apr 2026 at 16:40, Patrick Palka <ppalka@redhat.com> wrote:\n> >\n> > Tested on x86_64-pc-linux-gnu, does this look OK for trunk?\n> \n> OK, thanks.\n> \n> >\n> > We can also just implement the Mandates as a static_assert as pointed\n> > out by Lénárd.  Otherwise, I prefer this approach rather than the\n> > forwarding reference approach since it's cleaner and we use this approach\n> > in other parts of the library with no complaints so far.\n> >\n> > -- >8 --\n> >\n> > Like in r16-559 for std::expected, std::indirect's operator== is also\n> > prone to constraint recursion due to CWG 2369.  This patch works around\n> > the recursion in a similar manner.\n> >\n> >         PR libstdc++/124890\n> >         PR libstdc++/119714\n> >         PR libstdc++/112490\n> >\n> > libstdc++-v3/ChangeLog:\n> >\n> >         * include/bits/indirect.h (indirect::operator==): Replace\n> >         non-dependent std::indirect function parameter with a\n> >         dependent one of type indirect<_Tp2> where _Tp2 matches _Tp.\n> >         * testsuite/std/memory/indirect/124890.cc: New test.\n> > ---\n> >  libstdc++-v3/include/bits/indirect.h                 | 4 ++--\n> >  libstdc++-v3/testsuite/std/memory/indirect/124890.cc | 9 +++++++++\n> >  2 files changed, 11 insertions(+), 2 deletions(-)\n> >  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n> >\n> > diff --git a/libstdc++-v3/include/bits/indirect.h b/libstdc++-v3/include/bits/indirect.h\n> > index 2df46cc39a21..e1f7d1968b56 100644\n> > --- a/libstdc++-v3/include/bits/indirect.h\n> > +++ b/libstdc++-v3/include/bits/indirect.h\n> > @@ -344,11 +344,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n> >             return __lhs.__get() == __rhs.__get();\n> >         }\n> >\n> > -      template<typename _Up>\n> > +      template<same_as<_Tp> _Tp2, typename _Up>\n> >         requires (!__is_indirect<_Up>) // See PR c++/99599\n> >           && requires (const _Tp& __t, const _Up& __u) { __t == __u; }\n> >         friend constexpr bool\n> > -       operator==(const indirect& __lhs, const _Up& __rhs)\n> > +       operator==(const indirect<_Tp2>& __lhs, const _Up& __rhs)\n\nOops, forgot to pass the _Alloc parameter here.  Here's what I ended up\npushing:\n\n-- >8 --\n\nSubject: [PATCH] libstdc++: Fix constraint recursion in std::indirect's\n operator== [PR124890]\n\nLike in r16-559 for std::expected, std::indirect's operator== is also\nprone to constraint recursion due to CWG 2369, for the Mandates that we\nimplement as an associated constraint.  This patch works around the\nrecursion in a similar manner as done for std::expected (and\nstd::basic_const_iterator).\n\n\tPR libstdc++/124890\n\tPR libstdc++/119714\n\tPR libstdc++/112490\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/bits/indirect.h (indirect::operator==): Replace\n\tnon-dependent std::indirect function parameter with a\n\tdependent one of type indirect<_Vp> where _Vp matches _Tp.\n\t* testsuite/std/memory/indirect/124890.cc: New test.\n\nReviewed-by: Jonathan Wakely <jwakely@redhat.com>\n---\n libstdc++-v3/include/bits/indirect.h                 | 4 ++--\n libstdc++-v3/testsuite/std/memory/indirect/124890.cc | 9 +++++++++\n 2 files changed, 11 insertions(+), 2 deletions(-)\n create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n\ndiff --git a/libstdc++-v3/include/bits/indirect.h b/libstdc++-v3/include/bits/indirect.h\nindex 2df46cc39a21..6490a77a5079 100644\n--- a/libstdc++-v3/include/bits/indirect.h\n+++ b/libstdc++-v3/include/bits/indirect.h\n@@ -344,11 +344,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n \t    return __lhs.__get() == __rhs.__get();\n \t}\n \n-      template<typename _Up>\n+      template<typename _Up, same_as<_Tp> _Vp>\n \trequires (!__is_indirect<_Up>) // See PR c++/99599\n \t  && requires (const _Tp& __t, const _Up& __u) { __t == __u; }\n \tfriend constexpr bool\n-\toperator==(const indirect& __lhs, const _Up& __rhs)\n+\toperator==(const indirect<_Vp, _Alloc>& __lhs, const _Up& __rhs)\n \tnoexcept(noexcept(*__lhs == __rhs))\n \t{\n \t  if (!__lhs._M_objp)\ndiff --git a/libstdc++-v3/testsuite/std/memory/indirect/124890.cc b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc\nnew file mode 100644\nindex 000000000000..ce44256f2244\n--- /dev/null\n+++ b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc\n@@ -0,0 +1,9 @@\n+// { dg-do compile { target c++26 } }\n+\n+// PR libstdc++/124890 - Circular constraint in std::indirect::operator==\n+\n+#include <memory>\n+#include <vector>\n+\n+using I = std::vector<std::indirect<int>>::iterator;\n+static_assert(std::totally_ordered<I>);","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=jNFo+0Wo;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.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=jNFo+0Wo","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 [38.145.34.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 4fy1Rv1DXqz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 03:03:37 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id B66454D108F0\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 17:03:35 +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 51D5F4902656\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 17:02:58 +0000 (GMT)","from mail-qk1-f200.google.com (mail-qk1-f200.google.com\n [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-599-K0LXGbmBOQeBw1XgQz7shg-1; Fri, 17 Apr 2026 13:02:55 -0400","by mail-qk1-f200.google.com with SMTP id\n af79cd13be357-8d1d81dad37so15914185a.3\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 10:02:55 -0700 (PDT)","from [2600:4040:aa66:bf00:9e8e:99ff:fed1:71f]\n ([2600:4040:aa66:bf00:9e8e:99ff:fed1:71f])\n by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8e7d5fe98dcsm163122885a.7.2026.04.17.10.02.53\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 17 Apr 2026 10:02:53 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org B66454D108F0","OpenDKIM Filter v2.11.0 sourceware.org 51D5F4902656"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 51D5F4902656","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 51D5F4902656","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776445378; cv=none;\n b=ly8Q4045iF5ti8ZIPJ7kdh27hpxq73zN6ky/5MXgPGylAlwHZnQsueVDO722xM4dTFW5BDpzhMO3j800mSOiZRnhsmMUFG1VHoJEuP2+gSz82dgNmcoGkKwmsN31fKI6XHltmOCO2q8dHeSuAvh3YvG7fbr0SdsBLb/3p9TsgO8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776445378; c=relaxed/simple;\n bh=tS+Kj1Y1DmQoEHIfpq2fmB64Q/4+V8a1deJWJInx/OM=;\n h=DKIM-Signature:From:Date:To:Subject:Message-ID:MIME-Version;\n b=X8dDc0Z+IqknENmQWDgKCCbUG7R473ef+GGv8j0XDbZaGJIKnYSJE8iUlvxJ2BF36WOJCNn4OPJJy+0oJceS1bx15Zk4Bb9HF7NCsJsjq59JacfSPx1f203JaVfx3/tF4eTEF7XEOaPcwLYVC+zIdEB8ndWQozbUWUfIOw9qtr0=","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=1776445378;\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 in-reply-to:in-reply-to:references:references;\n bh=foqNWFQDMnGQYv+x/1QvXIfrIFZ9elYri46HyQwBwYs=;\n b=jNFo+0WolpWImwzoAcCySeWjX4aLbC5QOLkFLk7I4WD9U+SDAcCnKELntI8T7B3ImRrYAS\n zV5HFGc1tmXT/NU1MNxBorsBJmKiNVWeM9LVlWDQbE/w+kkVyxiNYO4zjaVpD/rtaXLgxn\n DagJQGTCO3ZUEC4YI3SsjjZTXx3bOu8=","X-MC-Unique":"K0LXGbmBOQeBw1XgQz7shg-1","X-Mimecast-MFC-AGG-ID":"K0LXGbmBOQeBw1XgQz7shg_1776445375","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776445375; x=1777050175;\n h=mime-version:references:message-id:in-reply-to:subject:cc:to:date\n :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=72C4s9hO3LM2VPnf9RNvMeHyxtCO5BuXC++EOF+fGUI=;\n b=TuyfKPTgth9BM3gPOIVMcvrdd/a2L5pc1+85tB4RXHefbNflLhQvmlFHIqmCZ5LY0n\n ZcxloaGd6kLgCQ6KO0NN+gTP0RJ78BFeEKoBI0kMYYwweIBDxAbhcqwwMuTZe3V2/qdF\n ChonKJICNCTdDCnU6E2FD1mdeFjudyut48nqrJcov+WWXcYrv0POOUygSRvqJaVZ185n\n +1syN7LkTZI+M8IsLnjJ0V/DYAjRMR9KWthhVssG+KjqBbfiekCKf6GJuyeyZrHphNmx\n lrMbmKgnIiEJVwSNxNpJB9uFQ7qOYsXIoDyKLDBdaNRgabst6RROLhJpKaFmRZVUk51h\n BzNA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9VJsHbLjIRVnEzYBHF74h8R+gqf3nzJeLD4swC04fuL39e/X+sjOD/nfqJ1MrRUmZOMpYP2TTmxgjOMw==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YxGGK315qZ2O3mxi7uy/aaTtNLGDW/2PZFTicWIUi1W2N9MAoR4\n 2cutJB5WL/IJDQymnJbbeLcGnbphj6to6V37ljcL/r7Ce+4Kf5xcN3y3lyzkTs40K/2TOBfg5qm\n r+u6JWkhWvvcfpD389GpAZaCMDbWra1WpDOg5xNyaUi+n+/AW5uAnHm2YwSw=","X-Gm-Gg":"AeBDietm6zdHi4jktumx5fZ87AEUva2pvLraMIa7dx/ABue6iVa/fGeBMbp9dCJitY+\n qISuqbP7Q/n2H47R7LA2wYHS91s0UhcR9Zj/vZXuW3Wo91iLGFfsqAssM8Qpr9GGNgPb3iRt33v\n HqamM0XqjYfVzQV5VPiUVPfzGwvCRaPXByTBmEXOuR0tQaJjQ6CAF8vv6QLqEm5euC6OZxFgWLb\n h5omO+4jB4Je0mAVikByU/1Tzu/HDGS/kohvW41lVP85DHQocn1owXpFoaYOQvOzqyCbo/BpZSD\n /NABfiL5eV3U9jc/K4uGpKbNWUC/FuTjT2ZnCnE78CZ0mBqOwpBIbLHAT3DbPzk7Yr7x3OfNRVL\n fHeB7aEHquJbWQbzUC7UaA4pE98Irg8KLwLOW/ZMzeAehNMPrRJbHvlyGOLP0wy2p","X-Received":["by 2002:a05:620a:269a:b0:8d3:a311:9277 with SMTP id\n af79cd13be357-8e7914be312mr334233885a.3.1776445375108;\n Fri, 17 Apr 2026 10:02:55 -0700 (PDT)","by 2002:a05:620a:269a:b0:8d3:a311:9277 with SMTP id\n af79cd13be357-8e7914be312mr334227385a.3.1776445374357;\n Fri, 17 Apr 2026 10:02:54 -0700 (PDT)"],"From":"Patrick Palka <ppalka@redhat.com>","X-Google-Original-From":"Patrick Palka <patrick@idea>","Date":"Fri, 17 Apr 2026 13:02:52 -0400 (EDT)","To":"Jonathan Wakely <jwakely@redhat.com>","cc":"Patrick Palka <ppalka@redhat.com>, gcc-patches@gcc.gnu.org,\n libstdc++@gcc.gnu.org","Subject":"Re: [PATCH] libstdc++: Fix constraint recursion in std:indirect's\n operator== [PR124890]","In-Reply-To":"\n <CACb0b4=kmVE80zoJpq66XnFvouLALLg=8Qy5jivvcr8RrBcCHw@mail.gmail.com>","Message-ID":"<da08684d-6329-fef8-ac9e-69667a3a0f48@idea>","References":"<20260417154009.1140472-1-ppalka@redhat.com>\n <CACb0b4=kmVE80zoJpq66XnFvouLALLg=8Qy5jivvcr8RrBcCHw@mail.gmail.com>","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"fmAmUjccRFnE_e5m0EDgHPAOzqwlGXwIU1wgy1FveeU_1776445375","X-Mimecast-Originator":"redhat.com","Content-Type":"multipart/mixed;\n boundary=\"8323329-1250527505-1776445373=:113381\"","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"}}]