From Jason Turner

[alg.swap]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp5_ho6m3l/{from.md → to.md} +12 -2
tmp/tmp5_ho6m3l/{from.md → to.md} RENAMED
@@ -17,16 +17,26 @@ template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for
17
  ranges::swap_ranges(I1 first1, S1 last1, I2 first2, S2 last2);
18
  template<input_range R1, input_range R2>
19
  requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
20
  constexpr ranges::swap_ranges_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
21
  ranges::swap_ranges(R1&& r1, R2&& r2);
 
 
 
 
 
 
 
 
 
 
22
  ```
23
 
24
  Let:
25
 
26
- - `last2` be `first2 + (last1 - first1)` for the overloads with no
27
- parameter named `last2`;
28
  - M be min(`last1 - first1`, `last2 - first2`).
29
 
30
  *Preconditions:* The two ranges \[`first1`, `last1`) and \[`first2`,
31
  `last2`) do not overlap. For the overloads in namespace `std`,
32
  `*(first1 + `n`)` is swappable with [[swappable.requirements]]
 
17
  ranges::swap_ranges(I1 first1, S1 last1, I2 first2, S2 last2);
18
  template<input_range R1, input_range R2>
19
  requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
20
  constexpr ranges::swap_ranges_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
21
  ranges::swap_ranges(R1&& r1, R2&& r2);
22
+
23
+ template<execution-policy Ep, random_access_iterator I1, sized_sentinel_for<I1> S1,
24
+ random_access_iterator I2, sized_sentinel_for<I2> S2>
25
+ requires indirectly_swappable<I1, I2>
26
+ ranges::swap_ranges_result<I1, I2>
27
+ ranges::swap_ranges(Ep&& exec, I1 first1, S1 last1, I2 first2, S2 last2);
28
+ template<execution-policy Ep, sized-random-access-range R1, sized-random-access-range R2>
29
+ requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
30
+ ranges::swap_ranges_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
31
+ ranges::swap_ranges(Ep&& exec, R1&& r1, R2&& r2);
32
  ```
33
 
34
  Let:
35
 
36
+ - `last2` be `first2 + (last1 - first1)` for the overloads in namespace
37
+ `std` with no parameter named `last2`;
38
  - M be min(`last1 - first1`, `last2 - first2`).
39
 
40
  *Preconditions:* The two ranges \[`first1`, `last1`) and \[`first2`,
41
  `last2`) do not overlap. For the overloads in namespace `std`,
42
  `*(first1 + `n`)` is swappable with [[swappable.requirements]]