From Jason Turner

[range.stride]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpuq63zqpk/{from.md → to.md} +16 -1
tmp/tmpuq63zqpk/{from.md → to.md} RENAMED
@@ -69,10 +69,13 @@ namespace std::ranges {
69
  }
70
  }
71
 
72
  constexpr auto size() requires sized_range<V>;
73
  constexpr auto size() const requires sized_range<const V>;
 
 
 
74
  };
75
 
76
  template<class R>
77
  stride_view(R&&, range_difference_t<R>) -> stride_view<views::all_t<R>>;
78
  }
@@ -102,10 +105,22 @@ constexpr auto size() const requires sized_range<const V>;
102
 
103
  ``` cpp
104
  return to-unsigned-like(div-ceil(ranges::distance(base_), stride_));
105
  ```
106
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  #### Class template `stride_view::iterator` <a id="range.stride.iterator">[[range.stride.iterator]]</a>
108
 
109
  ``` cpp
110
  namespace std::ranges {
111
  template<input_range V>
@@ -263,11 +278,11 @@ return *this;
263
 
264
  ``` cpp
265
  constexpr void operator++(int);
266
  ```
267
 
268
- *Effects:* Equivalent to: `++*this;`
269
 
270
  ``` cpp
271
  constexpr iterator operator++(int) requires forward_range<Base>;
272
  ```
273
 
 
69
  }
70
  }
71
 
72
  constexpr auto size() requires sized_range<V>;
73
  constexpr auto size() const requires sized_range<const V>;
74
+
75
+ constexpr auto reserve_hint() requires approximately_sized_range<V>;
76
+ constexpr auto reserve_hint() const requires approximately_sized_range<const V>;
77
  };
78
 
79
  template<class R>
80
  stride_view(R&&, range_difference_t<R>) -> stride_view<views::all_t<R>>;
81
  }
 
105
 
106
  ``` cpp
107
  return to-unsigned-like(div-ceil(ranges::distance(base_), stride_));
108
  ```
109
 
110
+ ``` cpp
111
+ constexpr auto reserve_hint() requires approximately_sized_range<V>;
112
+ constexpr auto reserve_hint() const requires approximately_sized_range<const V>;
113
+ ```
114
+
115
+ *Effects:* Equivalent to:
116
+
117
+ ``` cpp
118
+ auto s = static_cast<range_difference_t<decltype((base_))>>(ranges::reserve_hint(base_));
119
+ return to-unsigned-like(div-ceil(s, stride_));
120
+ ```
121
+
122
  #### Class template `stride_view::iterator` <a id="range.stride.iterator">[[range.stride.iterator]]</a>
123
 
124
  ``` cpp
125
  namespace std::ranges {
126
  template<input_range V>
 
278
 
279
  ``` cpp
280
  constexpr void operator++(int);
281
  ```
282
 
283
+ *Effects:* Equivalent to `++*this;`
284
 
285
  ``` cpp
286
  constexpr iterator operator++(int) requires forward_range<Base>;
287
  ```
288