On Aug 19, 2014, at 12:49 PM, John Maddock
The intent was always to submit is_iterator to Boost, but we never got around to it. Now I need it in Boost.Filesystem, so I'd rather see it go in type traits than just sticking it into boost/filesystem/detail.
Out of curiosity, why do you need it?
One situation is inside a constructor call:
struct myclass { template <class I> myclass(I a, I b) { // a and b could be iterators, or could be a pair of values, // we need to separate the two cases. }
Additionally in this example (a constructor), tag dispatching doesn’t truly work. One has to remove this constructor from the overload resolution set when I is not an iterator (or the right *kind* of iterator), else is_constructible