public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/99599] [11/12/13/14 Regression] Concepts requirement falsely reporting cyclic dependency, breaks tag_invoke pattern
Date: Fri, 08 Sep 2023 16:03:27 +0000	[thread overview]
Message-ID: <bug-99599-4-305eHTV4rR@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-99599-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99599

--- Comment #18 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppalka@gcc.gnu.org>:

https://gcc.gnu.org/g:2154bcd6d43cfd821ca70e1583880c4ed955355d

commit r14-3809-g2154bcd6d43cfd821ca70e1583880c4ed955355d
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Sep 8 12:02:20 2023 -0400

    c++: refine CWG 2369 satisfaction vs non-dep convs [PR99599]

    As described in detail in the PR, the CWG 2369 resolution has the
    surprising consequence of introducing constraint recursion in seemingly
    valid and innocent code.

    This patch attempts to fix this surpising behavior for the majority of
    problematic cases.  Rather than checking satisfaction before _all_
    non-dependent conversions, as specified by the CWG resolution, this patch
    makes us first check "safe" non-dependent conversions, then satisfaction,
    then followed by other non-dependent conversions.  A conversion is
    considered "safe" if computing it is guaranteed to not induce template
    instantiation, and we conservatively determine this by checking for
    user-declared constructors (resp. conversion functions) in the parm
    (resp. arg) class type, roughly.

            PR c++/99599

    gcc/cp/ChangeLog:

            * pt.cc (check_non_deducible_conversions): Add bool parameter
            passed down to check_non_deducible_conversion.
            (fn_type_unification): Call check_non_deducible_conversions
            an extra time before satisfaction with noninst_only_p=true.
            (conversion_may_instantiate_p): Define.
            (check_non_deducible_conversion): Add bool parameter controlling
            whether to compute only conversions that are guaranteed to
            not induce template instantiation.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-recursive-sat4.C: Make 'Int' non-aggregate
            in order to preserve intent of the testcase.
            * g++.dg/cpp2a/concepts-nondep4.C: New test.

  parent reply	other threads:[~2023-09-08 16:03 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-15 13:24 [Bug c++/99599] New: Concepts requirement falsely reporting recursion, " the_gamester28 at msn dot com
2021-03-15 13:49 ` [Bug c++/99599] [11 Regression] Concepts requirement falsely reporting cyclic dependency, " rguenth at gcc dot gnu.org
2021-03-15 14:20 ` redi at gcc dot gnu.org
2021-04-01 22:04 ` jason at gcc dot gnu.org
2021-04-02 12:47 ` gcc-bugs at marehr dot dialup.fu-berlin.de
2021-04-05 19:49 ` the_gamester28 at msn dot com
2021-04-27 11:40 ` [Bug c++/99599] [11/12 " jakub at gcc dot gnu.org
2021-05-01 17:38 ` ppalka at gcc dot gnu.org
2021-07-28  7:06 ` rguenth at gcc dot gnu.org
2021-08-25 14:44 ` ppalka at gcc dot gnu.org
2022-04-21  7:48 ` rguenth at gcc dot gnu.org
2022-08-08 15:06 ` [Bug c++/99599] [11/12/13 " ppalka at gcc dot gnu.org
2022-10-27 12:42 ` ppalka at gcc dot gnu.org
2023-04-04  5:33 ` catsith at me dot com
2023-05-29 10:04 ` [Bug c++/99599] [11/12/13/14 " jakub at gcc dot gnu.org
2023-06-07 18:25 ` danakj at orodu dot net
2023-06-07 18:41 ` danakj at orodu dot net
2023-06-07 20:03 ` danakj at orodu dot net
2023-08-01 18:16 ` ppalka at gcc dot gnu.org
2023-09-08 16:03 ` cvs-commit at gcc dot gnu.org [this message]
2024-02-02 18:02 ` [Bug c++/99599] [11/12/13 " ppalka at gcc dot gnu.org
2024-03-09 15:37 ` ppalka at gcc dot gnu.org
2024-03-21 21:40 ` redi at gcc dot gnu.org
2024-03-21 21:43 ` redi at gcc dot gnu.org
2024-03-22 14:08 ` ppalka at gcc dot gnu.org
2024-03-22 15:58 ` redi at gcc dot gnu.org
2024-03-27 23:16 ` redi at gcc dot gnu.org
2024-03-27 23:18 ` redi at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-99599-4-305eHTV4rR@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).