24 Iterators library [iterators]

24.6 Stream iterators [stream.iterators]

24.6.3 Class template istreambuf_iterator [istreambuf.iterator] Class template istreambuf_iterator::proxy [istreambuf.iterator::proxy]

namespace std {
  template <class charT, class traits = char_traits<charT> >
  class istreambuf_iterator<charT, traits>::proxy {
    charT keep_;
    basic_streambuf<charT,traits>* sbuf_;
    proxy(charT c,
      basic_streambuf<charT,traits>* sbuf)
      : keep_(c), sbuf_(sbuf) { }
    charT operator*() { return keep_; }

Class istreambuf_iterator<charT,traits>::proxy is for exposition only. An implementation is permitted to provide equivalent functionality without providing a class with this name. Class istreambuf_iterator<charT, traits>::proxy provides a temporary placeholder as the return value of the post-increment operator (operator++). It keeps the character pointed to by the previous value of the iterator for some possible future access to get the character.