difference_type distance_to(counting_iterator<OtherIncrementable> const& y) const { typedef typename mpl::if_< detail::is_numeric<Incrementable> , detail::number_distance<difference_type, Incrementable, OtherIncrementable> , detail::iterator_distance<difference_type, Incrementable, OtherIncrementable> >::type d; return d::distance(this->base(), y.base()); }
counting_iterator(counting_iterator const& rhs) : super_t(rhs.base()) {}
counting_iterator( counting_iterator<OtherIncrementable> const& t , typename enable_if_convertible<OtherIncrementable, Incrementable>::type* = 0 ) : super_t(t.base()) {}
counting_iterator( counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference> const& t , typename enable_if_convertible<OtherIncrementable, Incrementable>::type* = 0 ) : super_t(t.base()) {}