// { dg-do assemble } template class C; template struct S { template void f(U u) { C cu; cu.i = 3; // { dg-error "" } S::f is a friend, but this is // S::f. } }; template class C { template friend void S::f(U); int i; // { dg-error "" } private }; int main() { S si; si.f(3.0); }