https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61327
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid Status|UNCONFIRMED |NEW Last reconfirmed| |2014-05-27 Ever confirmed|0 |1 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Reduced: template<typename... T> struct A; template<typename T> struct A<T> { template<typename U> void f(U* u) { u->T::g(); } }; struct B { protected: void g() { } }; struct C : B { template<typename...> friend struct A; }; int main() { C c; A<B> a; a.f(&c); } The partial specialization does not match the friend declaration for some reason, I think it should do.