// Bug: member operator shadows global template in tsubst. // Build don't link: class ostream; template class smanip { public: friend ostream& operator<< <>(ostream &o, const smanip&m); }; template ostream& operator<<(ostream& o, const smanip& m) { return o;} class X { public: X operator<<(int); // commenting out this line makes it work! void print(ostream& os); }; void X::print(ostream& os) { smanip smd; os << smd; // gets bogus error }