move_iterator(const move_iterator<U>& u) : m_it(u.base()) {}
friend move_iterator operator+(difference_type n, const move_iterator& x) { return move_iterator(x.base() + n); }
friend difference_type operator-(const move_iterator& x, const move_iterator& y) { return x.base() - y.base(); }
friend bool operator>=(const move_iterator& x, const move_iterator& y) { return x.base() >= y.base(); }
friend bool operator< (const move_iterator& x, const move_iterator& y) { return x.base() < y.base(); }
move_iterator(const move_iterator<ConvertibleTo<I> >& u) : current_{u.base()} {}