Hi, I am trying to declare a (non template) friend function inside a template class. This code compiles just fine: #include <iostream> template <class T> struct Foo; template <class T> std::istream& operator>> (std::istream& is, Foo<T>& x); template<class T> struct Foo { //Foo operator>>(int x) const; friend std::istream& operator>> <>(std::istream& is, Foo<T>& x); }; But if I remove the comment from the other overload, I get this error message: error: declaration of ‘operator>>’ as non-function Is this overload illegal? Thanks, Shmuel