A C++ iterator wrapper that returns adjacent items of a range as a tuple