A UnformattedOutputFunction is a stream output function that performs the following:
1) Constructs an object of typebasic_ostream::sentry
with automatic storage duration, which performs the following: eofbit
or badbit
are set on the output stream, sets the failbit
as well, and if exceptions on failbit
are enabled in this output stream's exception mask ((exceptions() & failbit) != 0
), throws ios_base::failure
. sentry::operator bool()
, which is equivalent to basic_ios::good
. false
or sentry's constructor throws an exception, no output takes place. true
, attempts to perform the desired output by inserting the characters into the output stream as if by calling rdbuf()->sputc()
. Other public members of std::basic_ostream
may also be used, but virtual members of rdbuf()
except overflow()
, xsputn()
and sync()
will never be called. badbit
in the output stream. If exceptions on badbit
are enabled in this stream's exception mask ((exceptions() & badbit) != 0
), the exception is also rethrown. The following standard library functions are UnformattedOutputFunctions.
basic_ostream::operator<<(basic_streambuf*)
basic_ostream::put
basic_ostream::write
basic_ostream::flush
| (since C++11) |
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 63 | C++98 | the exception-handling policy was missing | added |
LWG 160 | C++98 | the process of determining whether the exception caught is rethrown mentioned a non-existing function exception() | corrected to exceptions() |
LWG 165 | C++98 | the only virtual member allowed to be called on rdbuf() was overflow() | also allowedxsputn() and sync() |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/UnformattedOutputFunction