[log] std::endl manipulator does not work, intentional

Hi Andrey On VS2008, this code ... #include <boost/log/trivial.hpp> #include <ostream> int main() { BOOST_LOG_TRIVIAL(trace) << "This is a" << std::endl << "multiline message"; return 0; } ... fails compilation with the following error: error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion) Now I do realize that "\r\n" would be a better choice here, as the flushing that comes with std::endl is not necessary. However, some developers in our team seem to prefer std::endl nevertheless. So, the question is: Is this intentional or just an oversight? BTW, only std::endl, std::ends and std::flush don't work, all the other manipulators do. Thanks, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.

On 22.03.2010 15:56, Andreas Huber wrote:
Hi Andrey
On VS2008, this code ...
#include <boost/log/trivial.hpp> #include <ostream>
int main() { BOOST_LOG_TRIVIAL(trace) << "This is a" << std::endl << "multiline message"; return 0; }
... fails compilation with the following error:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)
Now I do realize that "\r\n" would be a better choice here, as the flushing that comes with std::endl is not necessary. However, some developers in our team seem to prefer std::endl nevertheless. So, the question is: Is this intentional or just an oversight?
BTW, only std::endl, std::ends and std::flush don't work, all the other manipulators do.
It is an oversight. Will fix.
participants (2)
-
Andreas Huber
-
Andrey Semashev