
I don't really get why all of Neil Groves' iterators are in a range_detail namespace either, since they don't particularly feel like implementation details, and obviously it prevents declaring variables of that type without auto.
I made a poor decision in this respect. Thanks for picking me up on this. I either need to make the iterator type public (which I still dislike from an ideological perspective), or change the return type to something I can make public.
A range is just an iterator_range<some_iterator> (at least with the current Boost.Range design), so the iterator is quite central to the functionality and should be part of the public interface, IMHO.
We can certainly make these two functions more broadly applicable by improving the return types. I shall do this ASAP. Regards, Neil Groves