Test case: template<typename T> struct A { template<int n> struct B { void Foo(); }; }; template<typename T> void A<T>::B::Foo() {}; template<typename T> template<> void A<T>::B<1>::Foo(){}; int main() { return 0; }
I can confirm this in 3.4.0 and not in 3.5.0 but it is still a regression, I do not have a compiler from the 3.4 branch to know if it is fixed on the branch.
Yes, this is fixed on the 3.4 branch. W.