[Bug c++/107417] g++ fails to recognize parameter pack in requires-expression

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 19 16:54:41 GMT 2022


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

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

https://gcc.gnu.org/g:b428bb449be1bdbbd4000b51bb7c665981dc8c8f

commit r12-8996-gb428bb449be1bdbbd4000b51bb7c665981dc8c8f
Author: Patrick Palka <ppalka@redhat.com>
Date:   Sun Dec 4 10:47:24 2022 -0500

    c++: pack in requires-expr parm list [PR107417]

    Here find_parameter_packs_r isn't detecting the pack T inside the
    requires-expr's parameter list ultimately because cp_walk_trees
    deliberately avoids walking the list so as to avoid false positives in
    the unexpanded pack checker.

    But it should still be fine to walk the TREE_TYPE of each parameter,
    which we already need to do from for_each_template_parm_r, and is
    sufficient to fix the testcase.

            PR c++/107417

    gcc/cp/ChangeLog:

            * pt.cc (for_each_template_parm_r) <case REQUIRES_EXPR>: Move
            walking of the TREE_TYPE of each parameter to ...
            * tree.cc (cp_walk_subtrees) <case REQUIRES_EXPR>: ... here.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-requires33.C: New test.

    (cherry picked from commit 079add3ad39d6620d34665dd9c26c21951eb657c)


More information about the Gcc-bugs mailing list