constexpr counted_iterator& operator++();
constexpr decltype(auto) operator++(int);
constexpr counted_iterator operator++(int)
  requires forward_iterator<I>;
constexpr counted_iterator& operator--()
  requires bidirectional_iterator<I>;
constexpr counted_iterator operator--(int)
  requires bidirectional_iterator<I>;
constexpr counted_iterator operator+(iter_difference_t<I> n) const
  requires random_access_iterator<I>;
friend constexpr counted_iterator operator+(
  iter_difference_t<I> n, const counted_iterator& x)
    requires random_access_iterator<I>;
constexpr counted_iterator& operator+=(iter_difference_t<I> n)
  requires random_access_iterator<I>;
constexpr counted_iterator operator-(iter_difference_t<I> n) const
  requires random_access_iterator<I>;
template<common_with<I> I2>
  friend constexpr iter_difference_t<I2> operator-(
    const counted_iterator& x, const counted_iterator<I2>& y);
friend constexpr iter_difference_t<I> operator-(
  const counted_iterator& x, default_sentinel_t);
friend constexpr iter_difference_t<I> operator-(
  default_sentinel_t, const counted_iterator& y);
constexpr counted_iterator& operator-=(iter_difference_t<I> n)
  requires random_access_iterator<I>;