From Jason Turner

[counted.iterator]

Diff to HTML by rtfpessoa

tmp/tmprzl8548b/{from.md → to.md} RENAMED
@@ -32,13 +32,13 @@ namespace std {
32
  public:
33
  using iterator_type = I;
34
  using value_type = iter_value_t<I>; // present only
35
  // if I models indirectly_readable
36
  using difference_type = iter_difference_t<I>;
37
- using iterator_concept = typename I::iterator_concept; // present only
38
  // if the qualified-id I::iterator_concept is valid and denotes a type
39
- using iterator_category = typename I::iterator_category; // present only
40
  // if the qualified-id I::iterator_category is valid and denotes a type
41
  constexpr counted_iterator() requires default_initializable<I> = default;
42
  constexpr counted_iterator(I x, iter_difference_t<I> n);
43
  template<class I2>
44
  requires convertible_to<const I2&, I>
@@ -79,30 +79,30 @@ namespace std {
79
  requires random_access_iterator<I>;
80
  template<common_with<I> I2>
81
  friend constexpr iter_difference_t<I2> operator-(
82
  const counted_iterator& x, const counted_iterator<I2>& y);
83
  friend constexpr iter_difference_t<I> operator-(
84
- const counted_iterator& x, default_sentinel_t);
85
  friend constexpr iter_difference_t<I> operator-(
86
- default_sentinel_t, const counted_iterator& y);
87
  constexpr counted_iterator& operator-=(iter_difference_t<I> n)
88
  requires random_access_iterator<I>;
89
 
90
  constexpr decltype(auto) operator[](iter_difference_t<I> n) const
91
  requires random_access_iterator<I>;
92
 
93
  template<common_with<I> I2>
94
  friend constexpr bool operator==(
95
  const counted_iterator& x, const counted_iterator<I2>& y);
96
  friend constexpr bool operator==(
97
- const counted_iterator& x, default_sentinel_t);
98
 
99
  template<common_with<I> I2>
100
  friend constexpr strong_ordering operator<=>(
101
  const counted_iterator& x, const counted_iterator<I2>& y);
102
 
103
- friend constexpr iter_rvalue_reference_t<I> iter_move(const counted_iterator& i)
104
  noexcept(noexcept(ranges::iter_move(i.current)))
105
  requires input_iterator<I>;
106
  template<indirectly_swappable<I> I2>
107
  friend constexpr void iter_swap(const counted_iterator& x, const counted_iterator<I2>& y)
108
  noexcept(noexcept(ranges::iter_swap(x.current, y.current)));
 
32
  public:
33
  using iterator_type = I;
34
  using value_type = iter_value_t<I>; // present only
35
  // if I models indirectly_readable
36
  using difference_type = iter_difference_t<I>;
37
+ using iterator_concept = I::iterator_concept; // present only
38
  // if the qualified-id I::iterator_concept is valid and denotes a type
39
+ using iterator_category = I::iterator_category; // present only
40
  // if the qualified-id I::iterator_category is valid and denotes a type
41
  constexpr counted_iterator() requires default_initializable<I> = default;
42
  constexpr counted_iterator(I x, iter_difference_t<I> n);
43
  template<class I2>
44
  requires convertible_to<const I2&, I>
 
79
  requires random_access_iterator<I>;
80
  template<common_with<I> I2>
81
  friend constexpr iter_difference_t<I2> operator-(
82
  const counted_iterator& x, const counted_iterator<I2>& y);
83
  friend constexpr iter_difference_t<I> operator-(
84
+ const counted_iterator& x, default_sentinel_t) noexcept;
85
  friend constexpr iter_difference_t<I> operator-(
86
+ default_sentinel_t, const counted_iterator& y) noexcept;
87
  constexpr counted_iterator& operator-=(iter_difference_t<I> n)
88
  requires random_access_iterator<I>;
89
 
90
  constexpr decltype(auto) operator[](iter_difference_t<I> n) const
91
  requires random_access_iterator<I>;
92
 
93
  template<common_with<I> I2>
94
  friend constexpr bool operator==(
95
  const counted_iterator& x, const counted_iterator<I2>& y);
96
  friend constexpr bool operator==(
97
+ const counted_iterator& x, default_sentinel_t) noexcept;
98
 
99
  template<common_with<I> I2>
100
  friend constexpr strong_ordering operator<=>(
101
  const counted_iterator& x, const counted_iterator<I2>& y);
102
 
103
+ friend constexpr decltype(auto) iter_move(const counted_iterator& i)
104
  noexcept(noexcept(ranges::iter_move(i.current)))
105
  requires input_iterator<I>;
106
  template<indirectly_swappable<I> I2>
107
  friend constexpr void iter_swap(const counted_iterator& x, const counted_iterator<I2>& y)
108
  noexcept(noexcept(ranges::iter_swap(x.current, y.current)));