// { dg-do assemble } template <class T> struct S; template <class T> class C { friend void S<T>::f(); int i; }; template <class T> struct S { void f() { C<T> c; c.i = 3; } }; template void S<int>::f();