C++ named requirements: UnformattedInputFunction
From cppreference.com
Requirements
An UnformattedInputFunction is a stream input function that performs the following:
1) Constructs an object of type basic_istream::sentry with automatic storage duration and with the
noskipws argument set to true, which performs the following:
- If eofbit or badbit are set on the input stream, sets the failbit as well, and if exceptions on
failbitare enabled in this input stream's exception mask ((exceptions() & failbit) != 0), throws ios_base::failure. - Flushes the tie()'d output stream, if applicable.
2) Checks the status of the sentry by calling
sentry::operator bool(), which is equivalent to basic_ios::good.
- If the operator returns
falseor sentry's constructor throws an exception:
- Sets the number of extracted characters (gcount) in the input stream to zero.
- If the function was called to write to an array of
CharT, writesCharT()(the null character) to the first location of the array.
- If the operator returns
true, performs the input as if by callingrdbuf()->sbumpc()orrdbuf()->sgetc().
- If the end of the stream is reached (the call to
rdbuf()->sbumpc()orrdbuf()->sgetc()returnsTraits::eof()), setseofbit. If exceptions oneofbitare enabled in this stream's exception mask ((exceptions() & eofbit) != 0), throws ios_base::failure. - If an exception is thrown during input, sets
badbitin the input stream. If exceptions onbadbitare enabled in this stream's exception mask ((exceptions() & badbit) != 0), the exception is also rethrown.
- Exceptions thrown from basic_ios::clear are not caught or rethrown.
- If no exception was thrown during input, sets the number of extracted characters (gcount) in the input stream.
- If the end of the stream is reached (the call to
3) In any event, whether terminating by exception or returning, the sentry's destructor is called before leaving this function.
Standard library
The following standard library functions are UnformattedInputFunctions.
- std::getline, except that it does not modify gcount.
- basic_istream::operator>>(basic_streambuf*)
- basic_istream::get
- basic_istream::getline
- basic_istream::ignore
- basic_istream::peek
- basic_istream::read
- basic_istream::readsome
- basic_istream::putback, except that it first clears
eofbit - basic_istream::unget, except that it first clears
eofbit - basic_istream::sync, except that it does not modify gcount
- basic_istream::tellg, except that it does not modify gcount
- basic_istream::seekg, except that it first clears
eofbitand does not modify gcount - std::ws, except that it does not modify gcount
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
