tmp/tmpnhoquxrj/{from.md → to.md}
RENAMED
|
@@ -11,10 +11,17 @@ template<bidirectional_iterator I, sentinel_for<I> S>
|
|
| 11 |
requires permutable<I>
|
| 12 |
constexpr I ranges::reverse(I first, S last);
|
| 13 |
template<bidirectional_range R>
|
| 14 |
requires permutable<iterator_t<R>>
|
| 15 |
constexpr borrowed_iterator_t<R> ranges::reverse(R&& r);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
```
|
| 17 |
|
| 18 |
*Preconditions:* For the overloads in namespace `std`,
|
| 19 |
`BidirectionalIterator` meets the *Cpp17ValueSwappable*
|
| 20 |
requirements [[swappable.requirements]].
|
|
@@ -64,5 +71,33 @@ following assignment takes place:
|
|
| 64 |
- `result + `N for the overloads in namespace `std`.
|
| 65 |
- `{last, result + `N`}` for the overloads in namespace `ranges`.
|
| 66 |
|
| 67 |
*Complexity:* Exactly N assignments.
|
| 68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
requires permutable<I>
|
| 12 |
constexpr I ranges::reverse(I first, S last);
|
| 13 |
template<bidirectional_range R>
|
| 14 |
requires permutable<iterator_t<R>>
|
| 15 |
constexpr borrowed_iterator_t<R> ranges::reverse(R&& r);
|
| 16 |
+
|
| 17 |
+
template<execution-policy Ep, random_access_iterator I, sized_sentinel_for<I> S>
|
| 18 |
+
requires permutable<I>
|
| 19 |
+
I ranges::reverse(Ep&& exec, I first, S last);
|
| 20 |
+
template<execution-policy Ep, sized-random-access-range R>
|
| 21 |
+
requires permutable<iterator_t<R>>
|
| 22 |
+
borrowed_iterator_t<R> ranges::reverse(Ep&& exec, R&& r);
|
| 23 |
```
|
| 24 |
|
| 25 |
*Preconditions:* For the overloads in namespace `std`,
|
| 26 |
`BidirectionalIterator` meets the *Cpp17ValueSwappable*
|
| 27 |
requirements [[swappable.requirements]].
|
|
|
|
| 71 |
- `result + `N for the overloads in namespace `std`.
|
| 72 |
- `{last, result + `N`}` for the overloads in namespace `ranges`.
|
| 73 |
|
| 74 |
*Complexity:* Exactly N assignments.
|
| 75 |
|
| 76 |
+
``` cpp
|
| 77 |
+
template<execution-policy Ep, random_access_iterator I, sized_sentinel_for<I> S,
|
| 78 |
+
random_access_iterator O, sized_sentinel_for<O> OutS>
|
| 79 |
+
requires indirectly_copyable<I, O>
|
| 80 |
+
ranges::reverse_copy_truncated_result<I, O>
|
| 81 |
+
ranges::reverse_copy(Ep&& exec, I first, S last, O result,
|
| 82 |
+
OutS result_last);
|
| 83 |
+
template<execution-policy Ep, sized-random-access-range R, sized-random-access-range OutR>
|
| 84 |
+
requires indirectly_copyable<iterator_t<R>, iterator_t<OutR>>
|
| 85 |
+
ranges::reverse_copy_truncated_result<borrowed_iterator_t<R>, borrowed_iterator_t<OutR>>
|
| 86 |
+
ranges::reverse_copy(Ep&& exec, R&& r, OutR&& result_r);
|
| 87 |
+
```
|
| 88 |
+
|
| 89 |
+
Let N be min(`last - first`, `result_last - result`), and let
|
| 90 |
+
*NEW_FIRST* be `first + (last - first) - `N.
|
| 91 |
+
|
| 92 |
+
*Preconditions:* The ranges \[`first`, `last`) and \[`result`,
|
| 93 |
+
`result + `N) do not overlap.
|
| 94 |
+
|
| 95 |
+
*Effects:* Copies the range \[*`NEW_FIRST`*, `last`) to the range
|
| 96 |
+
\[`result`, `result + `N) such that for every non-negative integer i < N
|
| 97 |
+
the following assignment takes place:
|
| 98 |
+
`*(result + `N` - 1 - `i`) = *(`*`NEW_FIRST`*` + `i`)`.
|
| 99 |
+
|
| 100 |
+
*Returns:* `{last, `*`NEW_FIRST`*`, result + `N`}`.
|
| 101 |
+
|
| 102 |
+
*Complexity:* Exactly N assignments.
|
| 103 |
+
|