Hi,
I was just curious to see how I would implement a friend function in template class. It was purely as an excercise, as I have never really found a use for it in real life. Anyway, I came up with the following code. This works fine in MSVC 2003. However it doesn't compile in g++.
You get the error:
Does anyone know which one is correct?main.cpp:13: declaration of `class T'
main.cpp:5: shadows template parm `class T'
Code:#include <iostream> using namespace std; template <typename T> class CFoo { private: T val; public: CFoo(T d) : val(d) { } template<typename T> friend ostream & operator<<(ostream & os, const CFoo<T> & cf); }; template <typename T> ostream & operator<<(ostream & os, const CFoo<T> & cf) { os << cf.val << endl; return os; } int main() { CFoo<int> foo(10); cout << foo << endl; cin.get(); }