hello, i do use iterator adaptor to build a bit_iterator, which return single bits of the elements of an underlying iterator. the base_type of my iterator_adaptor is std::pair <BaseIterator, unsigned int> representing the iterator and the bit position. now my iterator does not work if i adapt istreambuf_iterator because self operator++(int) { self tmp(*this); ++*this; return tmp; } of iterator_adaptor is not able to use the proxy returned by the postfix increment of the input iterator. now i searched the archive and found in: Subject: Re: [boost] (infinite) sequences using recurrence relations From: Corwin Joy < cjoy@xxxx > Date: Fri, 10 Aug 2001 01:21:28 -0500 the following sentence:
In table 72, p. 511 of the standard you will notice something weird about the postfix increment operator: Namely, it is specified as (void)r++. In other words, unlike all other standard iterator types, an input iterator is not required to return a copy of its old value!
but this would mean that the expression *i++ is wrong in most cases. is there a trick to make iterator_adaptor also handle this case or shall i hope that nobody types *i++ with my bit_iterator based on such an input iterator, or did i understand something incorrectly? regards -- jan langer ... jan@langernetz.de "pi ist genau drei"