Dave Abrahams wrote:
on Sat Sep 03 2011, Krzysztof Żelechowski
wrote: 1. boost::zip_iterator requires a readable iterator. 2. std::istreambuf_iterator is a readable iterator. 3. boost::zip_iterator cannot dereference std::istream_iterator because std::istreambuf_iterator returns by value while boost::zip_iterator returns by reference; the exact error message is invalid initialization of non-const reference of type ‘char&’ from an rvalue of type ‘std::istreambuf_iterator
::char_type’
Contradiction? Am I missing anything?
You're probably not missing anything. I think the docs are wrong.
I would rather prefer if you declared that the implementation is wrong... I have written an alternative implementation named iterator_pair that does not have this limitation (although it is probably not as cool as zip_iterator).