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>