[Bug c++/105541] [12 Regression] ICE: Segmentation fault when template lambda in requires-clause

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jul 1 14:56:11 GMT 2022


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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:

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

commit r12-8535-gb1c8ee2627696717013ebdb1ca3f5f97a76b1cb9
Author: Jason Merrill <jason@redhat.com>
Date:   Wed May 11 14:53:26 2022 -0400

    c++: lambda template in requires [PR105541]

    Since the patch for PR103408, the template parameters for the lambda in
this
    test have level 1 instead of 2, and we were treating null template args as
1
    level of arguments, so tsubst_template_parms decided it had nothing to do.
    Fixed by distinguishing between <> and no args at all, which is what we
have
    in our "substitution" in a requires-expression.

            PR c++/105541

    gcc/cp/ChangeLog:

            * cp-tree.h (TMPL_ARGS_DEPTH): 0 for null args.
            * parser.cc (cp_parser_enclosed_template_argument_list):
            Use 0-length TREE_VEC for <>.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/lambda-requires1.C: New test.


More information about the Gcc-bugs mailing list