From Jason Turner

[uninitialized.move]

Diff to HTML by rtfpessoa

tmp/tmpf0iu_bzu/{from.md → to.md} RENAMED
@@ -19,15 +19,15 @@ return result;
19
  ```
20
 
21
  ``` cpp
22
  namespace ranges {
23
  template<input_iterator I, sentinel_for<I> S1,
24
- no-throw-forward-iterator O, no-throw-sentinel<O> S2>
25
  requires constructible_from<iter_value_t<O>, iter_rvalue_reference_t<I>>
26
  uninitialized_move_result<I, O>
27
  uninitialized_move(I ifirst, S1 ilast, O ofirst, S2 olast);
28
- template<input_range IR, no-throw-forward-range OR>
29
  requires constructible_from<range_value_t<OR>, range_rvalue_reference_t<IR>>
30
  uninitialized_move_result<borrowed_iterator_t<IR>, borrowed_iterator_t<OR>>
31
  uninitialized_move(IR&& in_range, OR&& out_range);
32
  }
33
  ```
@@ -36,19 +36,18 @@ namespace ranges {
36
  `ilast`).
37
 
38
  *Effects:* Equivalent to:
39
 
40
  ``` cpp
41
- for (; ifirst != ilast && ofirst != olast; ++ofirst, (void)++ifirst) {
42
  ::new (voidify(*ofirst))
43
  remove_reference_t<iter_reference_t<O>>(ranges::iter_move(ifirst));
44
- }
45
  return {std::move(ifirst), ofirst};
46
  ```
47
 
48
  [*Note 1*: If an exception is thrown, some objects in the range
49
- \[`first`, `last`) are left in a valid, but unspecified
50
  state. — *end note*]
51
 
52
  ``` cpp
53
  template<class InputIterator, class Size, class NoThrowForwardIterator>
54
  pair<InputIterator, NoThrowForwardIterator>
@@ -67,11 +66,11 @@ for (; n > 0; ++result, (void) ++first, --n)
67
  return {first, result};
68
  ```
69
 
70
  ``` cpp
71
  namespace ranges {
72
- template<input_iterator I, no-throw-forward-iterator O, no-throw-sentinel<O> S>
73
  requires constructible_from<iter_value_t<O>, iter_rvalue_reference_t<I>>
74
  uninitialized_move_n_result<I, O>
75
  uninitialized_move_n(I ifirst, iter_difference_t<I> n, O ofirst, S olast);
76
  }
77
  ```
@@ -80,14 +79,14 @@ namespace ranges {
80
  `ifirst`+\[0, `n`).
81
 
82
  *Effects:* Equivalent to:
83
 
84
  ``` cpp
85
- auto t = uninitialized_move(counted_iterator(ifirst, n),
86
  default_sentinel, ofirst, olast);
87
  return {std::move(t.in).base(), t.out};
88
  ```
89
 
90
  [*Note 2*: If an exception is thrown, some objects in the range
91
- `first`+\[0, `n`) are left in a valid but unspecified
92
  state. — *end note*]
93
 
 
19
  ```
20
 
21
  ``` cpp
22
  namespace ranges {
23
  template<input_iterator I, sentinel_for<I> S1,
24
+ nothrow-forward-iterator O, nothrow-sentinel-for<O> S2>
25
  requires constructible_from<iter_value_t<O>, iter_rvalue_reference_t<I>>
26
  uninitialized_move_result<I, O>
27
  uninitialized_move(I ifirst, S1 ilast, O ofirst, S2 olast);
28
+ template<input_range IR, nothrow-forward-range OR>
29
  requires constructible_from<range_value_t<OR>, range_rvalue_reference_t<IR>>
30
  uninitialized_move_result<borrowed_iterator_t<IR>, borrowed_iterator_t<OR>>
31
  uninitialized_move(IR&& in_range, OR&& out_range);
32
  }
33
  ```
 
36
  `ilast`).
37
 
38
  *Effects:* Equivalent to:
39
 
40
  ``` cpp
41
+ for (; ifirst != ilast && ofirst != olast; ++ofirst, (void)++ifirst)
42
  ::new (voidify(*ofirst))
43
  remove_reference_t<iter_reference_t<O>>(ranges::iter_move(ifirst));
 
44
  return {std::move(ifirst), ofirst};
45
  ```
46
 
47
  [*Note 1*: If an exception is thrown, some objects in the range
48
+ \[`ifirst`, `ilast`) are left in a valid, but unspecified
49
  state. — *end note*]
50
 
51
  ``` cpp
52
  template<class InputIterator, class Size, class NoThrowForwardIterator>
53
  pair<InputIterator, NoThrowForwardIterator>
 
66
  return {first, result};
67
  ```
68
 
69
  ``` cpp
70
  namespace ranges {
71
+ template<input_iterator I, nothrow-forward-iterator O, nothrow-sentinel-for<O> S>
72
  requires constructible_from<iter_value_t<O>, iter_rvalue_reference_t<I>>
73
  uninitialized_move_n_result<I, O>
74
  uninitialized_move_n(I ifirst, iter_difference_t<I> n, O ofirst, S olast);
75
  }
76
  ```
 
79
  `ifirst`+\[0, `n`).
80
 
81
  *Effects:* Equivalent to:
82
 
83
  ``` cpp
84
+ auto t = uninitialized_move(counted_iterator(std::move(ifirst), n),
85
  default_sentinel, ofirst, olast);
86
  return {std::move(t.in).base(), t.out};
87
  ```
88
 
89
  [*Note 2*: If an exception is thrown, some objects in the range
90
+ `ifirst`+\[0, `n`) are left in a valid but unspecified
91
  state. — *end note*]
92