std::basic_ostream::flush(3)

NAME
std::basic_ostream::flush - std::basic_ostream::flush

Synopsis
   basic_ostream& flush();
   Writes uncommitted changes to the underlying output sequence. Behaves as an
   UnformattedOutputFunction.
   If rdbuf() is a null pointer, the sentry object is not constructed.
   Otherwise, after constructing and checking the sentry object, calls
   rdbuf()->pubsync(). If the call returns -1, calls setstate(badbit).

Parameters
   (none)

Return value
   *this

Exceptions
   May throw std::ios_base::failure if (exceptions() & badbit) != 0.

Example
// Run this code
 #include <chrono>
 #include <iostream>
 #include <thread>
 using namespace std::chrono_literals;
 void f()
 {
     std::cout << "Output from thread... ";
     for (int i{1}; i != 10; ++i)
     {
         std::this_thread::sleep_for(250ms);
         std::cout << i << ' ';
         // output three numbers at once;
         // the effect is observable only in real-time
         if (0 == (i % 3))
             std::cout.flush();
     }
     std::cout << std::endl; // flushes as well
 }
 int main()
 {
     std::thread tr{f};
     std::this_thread::sleep_for(150ms);
     std::clog << "Output from main\n";
     tr.join();
 }

Output:
 Output from main
 Output from thread... 1 2 3 4 5 6 7 8 9
   Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
     DR Applied to Behavior as published Correct behavior
                      flush() did not behave as an
   LWG 581 C++98 UnformattedOutputFunction behaves as an
                      because of the resolution of LWG issue UnformattedOutputFunction
                      60

See also
   pubsync invokes sync()
             (public member function of std::basic_streambuf<CharT,Traits>)
   sync synchronizes the buffers with the associated character sequence
   [virtual] (virtual protected member function of std::basic_streambuf<CharT,Traits>)
   flush flushes the output stream
             (function template)
   endl outputs '\n' and flushes the output stream
             (function template)
   sync synchronizes with the underlying storage device
             (public member function of std::basic_istream<CharT,Traits>)