[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<charT,traits>​::​*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<charT, traits>​::​*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 {template<class charT, class traits>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_; }};}
