2017-06-28 22:03 GMT+02:00 Michel Morin via Boost
Hi,
The Boost iterator traversal concepts have not been adopted by the C++ Standard. Because of this, some of RandomAccessTraversalIterators (Boost's concepts) are treated as InputIterators (Standard's concepts) by the stdlib.
IMHO, Boost.Iterator should provide BoostIteratorTraversalConcepts-aware `boost::advance` and `boost::distance` to avoid the inefficiencies.
Not just inefficiencies. Using `prev()` may simply cause UB. See here: https://akrzemi1.wordpress.com/2017/01/02/not-detecting-bugs/
However, neither of them are implemented. (Boost.Range has `boost::distance` for ranges, but it just calls `std::distance`.)
I'm attaching files that implement `boost::advance` and `boost::distance`. Would these functions be useful additions?
They are necessary for Boost to be consistent. But I think this means coupling two libraries. Regards, &rzej;