// { dg-do assemble } class mystream; template class a; template mystream& operator>>( mystream& s, a& thea ); template class a { public: friend mystream& operator>> <>( mystream&, a& thea ); private: T amember; }; template<> mystream& operator>> ( mystream& s, a& thea ); template class a; template<> mystream& operator>> ( mystream& s, a& thea ) { thea.amember = 0; return s; }