The
class template
istreambuf_iterator
defines an input iterator (
[input.iterators]) that
reads successive
characters
from the streambuf for which it was constructed
.operator*
provides access to the current input character, if any
.  Each time
operator++
is evaluated, the iterator advances to the next input character
.If the end of stream is reached (
streambuf_type::sgetc() returns
traits::eof()),
the iterator becomes equal to the
end-of-stream
iterator value
.The default constructor
istreambuf_iterator()
and the constructor
istreambuf_iterator(nullptr)
both construct an end-of-stream iterator object suitable for use
as an end-of-range
.All specializations of 
istreambuf_iterator shall have a trivial copy
constructor, a 
constexpr default constructor, and a trivial destructor
.