Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse complains: "Invalid overload of 'endl'" - but code does compile

I've written an operator<< for my templated class:

template<class T>
std::ostream& operator<<(std::ostream &strm, const MyClass<T> &obj)

and when I write

cout << myClassInstance << endl;

this compiles and runs, but my Eclipse CDT says:

Invalid overload of 'endl'

Why does it tell me that?

(I use Eclipse CDT Kepler on Win7 64bit with Cygwin gcc)

like image 341
einpoklum Avatar asked Jul 16 '13 10:07

einpoklum


2 Answers

I was getting this error as well.

//print the value
cout << rt->element << endl;

A simple change to:

//print the value
cout << rt->element;
cout << endl;

removed the error for me. New to C++, but it seems like you also need to overload << for myClassInstance. If you want to use the original method.

like image 144
frmdstryr Avatar answered Nov 06 '22 08:11

frmdstryr


This is indeed a bug with Eclipse CDT (more specifically Eclipse's Code Analysis tool CODAN). There is bug report and it has been fixed and should be available from CDT 8.3.0 which is due February 2014.

like image 12
iNFINITEi Avatar answered Nov 06 '22 07:11

iNFINITEi