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