basic_streambuf::overflow

virtual int_type overflow(int_type c = T::eof());

If c does not compare equal to T::eof(), the protected virtual member function endeavors to insert the element T::to_char_type(c) into the output stream. It can do so in various ways:

If the function cannot succeed, it returns T::eof() or throws an exception. Otherwise, it returns T::not_eof(c). The default behavior is to return T::eof().