[istreambuf.iterator.proxy] # 24 Iterators library [[iterators]](./#iterators) ## 24.6 Stream iterators [[stream.iterators]](stream.iterators#istreambuf.iterator.proxy) ### 24.6.4 Class template istreambuf_iterator [[istreambuf.iterator]](istreambuf.iterator#proxy) #### 24.6.4.2 Class istreambuf_iterator​::​*proxy* [istreambuf.iterator.proxy] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L6924) Classistreambuf_iterator​::​*proxy* is for exposition only[.](#1.sentence-1) An implementation is permitted to provide equivalent functionality without providing a class with this name[.](#1.sentence-2) Classistreambuf_iterator​::​*proxy* provides a temporary placeholder as the return value of the post-increment operator (operator++)[.](#1.sentence-3) It keeps the character pointed to by the previous value of the iterator for some possible future access to get the character[.](#1.sentence-4) [🔗](#lib:proxy,istreambuf_iterator) namespace std {templateclass istreambuf_iterator::*proxy* { // *exposition only* charT keep_; basic_streambuf* sbuf_; *proxy*(charT c, basic_streambuf* sbuf): keep_(c), sbuf_(sbuf) { }public: charT operator*() { return keep_; }};}