non template friend function and overloading

Shmuel Hanoch shmuel@infinitylabs.co.il
Sun Mar 26 19:44:00 GMT 2017


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



More information about the Gcc-help mailing list