1// { dg-do assemble } 2 3template <class T> 4bool f(T); 5 6template <class T> 7struct S1 { 8 typedef T X; 9 friend bool f<>(const S1&); 10}; 11 12template <class T> 13struct S2 { 14}; 15 16template <class T> 17struct S2<S1<T> > { 18 typedef typename S1<T>::X Y; 19}; 20 21template <class T> 22typename S2<S1<T> >::Y 23f(const S1<T>&); 24 25template struct S1<int>; 26