std::flush
right after a std::endl
is used all over the legacy code I am looking at. When I first saw this, my thought was it is redundant from looking at the description of std::endl
and std::flush
at:
http://en.cppreference.com/w/cpp/io/manip/endl
http://en.cppreference.com/w/cpp/io/manip/flush
Here is an example of what I am seeing in the legacy source code:
std::cout << "Generic Notification" << std::endl << std::flush;
But, as many senior software developers have seen this code throughout the years, I am wondering if there is some detail I am missing. Is there any purpose to having a std::flush
after a std::endl
?
There's no purpose for it.
If I had to speculate on why your legacy code contains these lines, there are a few possibilities, starting with (what I consider to be) the most probable scenarios:
std::flush
mistakenly, and the senior developers didn't consider it a problem needing fixingstd::endl
did not trigger a flush, which meant that your senior developers were (correctly) understanding that it was necessarystd::endl
to trigger a flushstd::endl
.