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

--- Comment #9 from GCC 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:d1fc9816df81e953308428641685d6ec6d84c9ac

commit r15-2802-gd1fc9816df81e953308428641685d6ec6d84c9ac
Author: Patrick Palka <ppa...@redhat.com>
Date:   Wed Aug 7 14:28:26 2024 -0400

    c++: erroneous partial spec vs primary tmpl [PR116064]

    When a partial specialization is deemed erroneous at parse time, we
    currently flag the primary template as erroneous instead.  Later
    at instantiation time we check if the primary template is erroneous
    rather than the selected partial specialization, so at least we're
    consistent.

    But it's better not to conflate a partial specialization with the
    primary template since they're instantiated independenty.  This avoids
    rejecting the instantiation of A<int> in the below testcase.

            PR c++/116064

    gcc/cp/ChangeLog:

            * error.cc (get_current_template): If the current scope is
            a partial specialization, return it instead of the primary
            template.
            * pt.cc (instantiate_class_template): Pass the partial
            specialization if any to maybe_diagnose_erroneous_template
            instead of the primary template.

    gcc/testsuite/ChangeLog:

            * g++.dg/template/permissive-error2.C: New test.

    Reviewed-by: Jason Merrill <ja...@redhat.com>

Reply via email to