tmp/tmpaot4col2/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### Helper concepts <a id="range.utility.helpers">[[range.utility.helpers]]</a>
|
| 2 |
+
|
| 3 |
+
Many of the types in subclause [[range.utility]] are specified in terms
|
| 4 |
+
of the following exposition-only concepts:
|
| 5 |
+
|
| 6 |
+
``` cpp
|
| 7 |
+
template<class R>
|
| 8 |
+
concept simple-view = // exposition only
|
| 9 |
+
view<R> && range<const R> &&
|
| 10 |
+
same_as<iterator_t<R>, iterator_t<const R>> &&
|
| 11 |
+
same_as<sentinel_t<R>, sentinel_t<const R>>;
|
| 12 |
+
|
| 13 |
+
template<class I>
|
| 14 |
+
concept has-arrow = // exposition only
|
| 15 |
+
input_iterator<I> && (is_pointer_v<I> || requires(I i) { i.operator->(); });
|
| 16 |
+
|
| 17 |
+
template<class T, class U>
|
| 18 |
+
concept not-same-as = // exposition only
|
| 19 |
+
!same_as<remove_cvref_t<T>, remove_cvref_t<U>>;
|
| 20 |
+
```
|
| 21 |
+
|