// PR c++/58022 template struct A { }; template A & operator<< (A&, T); template class foo; template A & operator<<(A& o, const foo& l); template class foo { friend A& operator<< (A& o, const foo& l); }; class bar; foo fb; class bar { virtual void baz()=0; };