
Hello all, How do I use Boost.ConceptCheck and/or Bosot.EnableIf to implement concept-based overloading (as discussed in N2081)? For example, from N2081, the following functions are selected based on `Iter` matching one of the two specified concepts: template<InputIterator Iter> // proposed concept syntax (not C++) void advance(Iter& x, Iter::distance_type n) { while (n > 0) { ++x; --n; } } template<BidirectionalIterator Iter> // proposed concept syntax (not C++) void advance(Iter& x, Iter::distance_type n) { if (n > 0) while (n > 0) { ++x; --n; } else while (n < 0) { --x; ++n; } } How do I program this in C++ using Boost libraries? N2081 briefly mentions this can be done in C++ using SFINAE, etc. I think I could use `enable_if` if I had some sort of `is_input_iterator` metafunction... Please just point me to the documentation if this has already been addressed there. Thank you very much. -- Lorenzo