1 // { dg-do assemble } 2 3 template <class T, class U> 4 struct S { 5 template <class X, class Y, class Z> 6 friend X f(X, Y, Z); 7 }; 8 9 template <class X, class Y, class Z> f(X x,Y,Z)10X f(X x, Y, Z) { 11 return x; 12 } 13 14 template char f(char, long, short); 15 template char* f(char*, long*, short*); 16 template class S<int, double>; 17 template class S<void*, double>; 18 template double* f(double*, long*, short*); 19