https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108347
--- Comment #4 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:a6ac1fc64c3caed19da65c2e6b12f8ddaf551231 commit r14-4110-ga6ac1fc64c3caed19da65c2e6b12f8ddaf551231 Author: Patrick Palka <ppa...@redhat.com> Date: Mon Sep 18 14:41:07 2023 -0400 c++: unifying identical tmpls from current inst [PR108347] Here more_specialized_partial_spec wrongly considers the two partial specializations to be unordered ultimately because unify for identical parm=arg=A<T>::C returns failure due to C being dependent. This patch fixes this by relaxing unify's early-exit identity test to also accept dependent decls; we can't deduce anything further from them anyway. In passing this patch removes the CONST_DECL case of unify: we should never see the CONST_DECL version of a template parameter here, and for other CONST_DECLs (such as enumerators) it seems we can rely on them to already have been folded to their DECL_INITIAL. PR c++/108347 gcc/cp/ChangeLog: * pt.cc (unify): Return unify_success for identical dependent DECL_P 'arg' and 'parm'. <case CONST_DECL>: Remove handling. gcc/testsuite/ChangeLog: * g++.dg/template/ttp41.C: New test.