// { dg-do assemble } template struct A { static void f(); }; template class B { friend class A; static int i; // { dg-error "" } private }; template class C { template friend class A; static int i; }; template void A::f() { B::i = 3; C::i = 3; C::i = 3; B::i = 3; // { dg-error "" } member `i' is private } template void A::f();