1// { dg-do assemble } 2template <class T> 3class C; 4 5template <class T> 6struct S 7{ 8 template <class U> 9 void f(U u) 10 { 11 C<U> cu; 12 cu.i = 3; // { dg-error "" } S<double>::f<U> is a friend, but this is 13 // S<int>::f<double>. 14 } 15}; 16 17 18template <class T> 19class C 20{ 21 template <class U> 22 friend void S<T>::f(U); 23 24 int i; // { dg-error "" } private 25}; 26 27 28int main() 29{ 30 S<int> si; 31 si.f(3.0); 32} 33