PS:
On 12. Aug 2019, at 10:26, Hans Dembinski
wrote: +1 for the proposal to have a modern iterator_fascade. I use a private implementation of iterator_fascade in Boost.Histogram for a couple of reasons, but mostly because the old boost iterator library pulls in a lot of boost dependencies which I want to avoid. But code duplication is bad, so I am looking forward to switch to your library which only depends on the stdlib.
I object to change the name of iterator_fascade. The established convention in Boost is to call a updated library X with the same purpose X2, see variant and variant2, coroutine and coroutine2, signal and signal2, etc. This library should follow this route and be called iterator2.
I am by no means an expert of the iterator_fascade, but I spend some time to figure out how the old iterator_fascade works, and it has some subtle solutions to corner case situations. Therefore, I would recommended that you port the iterator test suite to your project (if you haven't done so already).
Also, please add a modern iterator_adaptor. iterator_adaptors are awesome, because you need to implemented even less.
You should switch from gtest to lightweight_test in Boost.Core. lightweight_test is lovely and pulling in a third-party dependency for testing will surely be rejected in a Boost review.