
It is not immediately obvious how to correctly specify the template arguments for boost::iterator_facade<> with an output iterator. This particular case is not mentioned in the tutorial and the first impression is that using such category as std::output_iterator_tag should be all that's required. This is not the case; in order for the postincrement temporary NOT to create a copy of a [fake] pointed-to value OR a copy of the proxy, the user has to be very careful about Value and Reference arguments. Took me 3 tries and a thorough look into the sources to get it right: Value=<argument of Proxy::operator=> and Reference=Proxy&. Would be nice to add this use case to the tutorial since it is definitely tricky and error-prone as it is. Of course there might be ANOTHER piece of documentation describing it that I missed :( Regards, ...Max...