https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115716
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Simon Martin <simar...@gcc.gnu.org>: https://gcc.gnu.org/g:26ee954476bef7328d2cf45928c3c9b84df77178 commit r15-3195-g26ee954476bef7328d2cf45928c3c9b84df77178 Author: Simon Martin <si...@nasilyan.com> Date: Sun Aug 25 21:59:31 2024 +0200 c++: Check template parameters in member class template specialization [PR115716] We currently ICE upon the following invalid code, because we don't check that the template parameters in a member class template specialization are correct. === cut here === template <typename T> struct x { template <typename U> struct y { typedef T result2; }; }; template<> template<typename U, typename> struct x<int>::y { typedef double result2; }; int main() { x<int>::y<int>::result2 xxx2; } === cut here === This patch fixes the PR by calling redeclare_class_template. PR c++/115716 gcc/cp/ChangeLog: * pt.cc (maybe_process_partial_specialization): Call redeclare_class_template. gcc/testsuite/ChangeLog: * g++.dg/template/spec42.C: New test. * g++.dg/template/spec43.C: New test.