Remarks:
The public functions of
basic_streambuf
call this virtual function only when
gptr()
is null,
gptr()== eback(),
or
traits::eq(traits::to_char_type(c), gptr()[-1])
returns
false.
If
traits::eq_int_type(c, traits::eof())
returns
true,
then the input sequence is backed up one character before the pending sequence is determined.
If
traits::eq_int_type(c, traits::eof())
returns false, then c is prepended. Whether the input sequence is backed up or modified in any other way is unspecified.
Failure may occur because the input sequence could not be backed up, or if for some
other reason the pointers could not be set consistent with the constraints.
pbackfail()
is called only when put back has really failed.