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

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

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

commit r12-7860-gecb4882e362e80a1bf172453ac9b366edbb4e89c
Author: Patrick Palka <ppa...@redhat.com>
Date:   Mon Mar 28 14:15:16 2022 -0400

    c++: constrained template friend matching ICE [PR105064]

    Here during declaration matching for the two constrained template
    friends, we crash from maybe_substitute_reqs_for because the second
    friend doesn't yet have DECL_TEMPLATE_INFO set (we're being called
    indirectly from push_template_decl).

    As far as I can tell, this situation happens only when declaring a
    constrained template friend within a non-template class (as in the
    testcase), in which case the substitution would be a no-op anyway.
    So this patch rearranges maybe_substitute_reqs_for to gracefully
    handle missing DECL_TEMPLATE_INFO by just skipping the substitution.

            PR c++/105064

    gcc/cp/ChangeLog:

            * constraint.cc (maybe_substitute_reqs_for): Don't assume
            DECL_TEMPLATE_INFO is available.

    gcc/testsuite/ChangeLog:

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

Reply via email to