tmp/tmpol_9rj19/{from.md → to.md}
RENAMED
|
@@ -1,20 +1,20 @@
|
|
| 1 |
### Helper concepts <a id="range.utility.helpers">[[range.utility.helpers]]</a>
|
| 2 |
|
| 3 |
-
Many of the types in
|
| 4 |
-
|
| 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 different-from = // exposition only
|
| 19 |
!same_as<remove_cvref_t<T>, remove_cvref_t<U>>;
|
| 20 |
|
|
|
|
| 1 |
### Helper concepts <a id="range.utility.helpers">[[range.utility.helpers]]</a>
|
| 2 |
|
| 3 |
+
Many of the types in [[range.utility]] are specified in terms of the
|
| 4 |
+
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(const I i) { i.operator->(); });
|
| 16 |
|
| 17 |
template<class T, class U>
|
| 18 |
concept different-from = // exposition only
|
| 19 |
!same_as<remove_cvref_t<T>, remove_cvref_t<U>>;
|
| 20 |
|