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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:2efbbba16a0630fac8cadcd6d9e0ffaabfadb79f

commit r11-8201-g2efbbba16a0630fac8cadcd6d9e0ffaabfadb79f
Author: Jason Merrill <ja...@redhat.com>
Date:   Thu Apr 15 13:38:54 2021 -0400

    c++: noexcept error recursion [PR100101]

    Here instantiating the noexcept-specifier for bar<void>() means
    instantiating A<void>::value, which complains about the conversion from 0
to
    int* in the default argument of foo.  Since my patch for PR99583, printing
    the error context involves looking at C<void>::type, which again wants to
    instantiate A<void>::value, which breaks.  For now at least, let's break
    this recursion by avoiding looking into the noexcept-specifier in
    find_typenames, and limit that to just the uses_parameter_packs case that
    PR99583 cares about.

    gcc/cp/ChangeLog:

            PR c++/100101
            PR c++/99583
            * pt.c (find_parameter_packs_r) [FUNCTION_TYPE]: Walk into
            TYPE_RAISES_EXCEPTIONS here.
            * tree.c (cp_walk_subtrees): Not here.

    gcc/testsuite/ChangeLog:

            PR c++/100101
            * g++.dg/cpp0x/noexcept67.C: New test.

Reply via email to