https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119726
--- Comment #2 from Anders Wind <awia00 at gmail dot com> --- Two questions: I am a bit interested in why my original case is correctly rejecting the code, but the following is not being rejected (A is no longer a template class). ``` struct A { template<typename T> struct AA { }; }; struct B : A { }; template<> struct B::AA<int> { }; ``` Besides, if A had not been used in CRTP, but simply has <int> ``` template<typename U> struct A { template<typename T> struct AA { }; }; struct B : A<int> { }; template<> struct B::AA<int> { }; ``` Here is seems wrong to have to specialize A<int>::AA<int>, since it is no longer limited to B's inner AA class.