1 // PR c++/58022
2 
3 template <class T> struct A { };
4 template <class T> A<T> & operator<< (A<T>&, T);
5 template <class T> class foo;
6 template <class T> A<char> & operator<<(A<char>& o, const foo<T>& l);
7 template <class T> class foo  {
8     friend A<char>& operator<< <T> (A<char>& o, const foo<T>& l);
9 };
10 class bar;
11 foo<bar> fb;
12 class bar { virtual void baz()=0; };
13