given that class:
#include <iostream>
using std::ostream;
template<class T>
class MyClass {
T x;
public:
MyClass(T x);
friend ostream& operator<<(ostream& os, const MyClass<T>& m);
};
template<class T>
MyClass<T>::MyClass(T x) :
x(x) {
}
template<class T>
ostream& operator<<(ostream& os, const MyClass<T>& m) {
return os < m.x;
}
I get the following error:
friend declaration 'std::ostream& operator<<(std::ostream&, const MyClass&)' declares a non-template function
Can someone explain the meaning of that error and how can I fix it (but I want to do that inside the class)?