27 Iterators library [iterators]

27.6 Stream iterators [stream.iterators]

27.6.3 Class template istreambuf_­iterator [istreambuf.iterator]

27.6.3.1 Class template istreambuf_­iterator​::​proxy [istreambuf.iterator.proxy]

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

Класс istreambuf_­iterator<charT,traits>​::​proxy предназначен только для экспозиции. Реализации разрешено предоставлять эквивалентную функциональность без предоставления класса с этим именем. Класс istreambuf_­iterator<charT, traits>​::​proxy предоставляет временный заполнитель в качестве возвращаемого значения оператора постинкремента (operator++). Он сохраняет символ, на который указывает предыдущее значение итератора для некоторого возможного доступа в будущем для получения символа.