From Jason Turner

[specialized.destroy]

Diff to HTML by rtfpessoa

tmp/tmp7bcym9d_/{from.md → to.md} RENAMED
@@ -27,14 +27,14 @@ for (; first != last; ++first)
27
  destroy_at(addressof(*first));
28
  ```
29
 
30
  ``` cpp
31
  namespace ranges {
32
- template<no-throw-input-iterator I, no-throw-sentinel<I> S>
33
  requires destructible<iter_value_t<I>>
34
  constexpr I destroy(I first, S last) noexcept;
35
- template<no-throw-input-range R>
36
  requires destructible<range_value_t<R>>
37
  constexpr borrowed_iterator_t<R> destroy(R&& r) noexcept;
38
  }
39
  ```
40
 
@@ -59,17 +59,17 @@ for (; n > 0; (void)++first, --n)
59
  return first;
60
  ```
61
 
62
  ``` cpp
63
  namespace ranges {
64
- template<no-throw-input-iterator I>
65
  requires destructible<iter_value_t<I>>
66
  constexpr I destroy_n(I first, iter_difference_t<I> n) noexcept;
67
  }
68
  ```
69
 
70
  *Effects:* Equivalent to:
71
 
72
  ``` cpp
73
- return destroy(counted_iterator(first, n), default_sentinel).base();
74
  ```
75
 
 
27
  destroy_at(addressof(*first));
28
  ```
29
 
30
  ``` cpp
31
  namespace ranges {
32
+ template<nothrow-input-iterator I, nothrow-sentinel-for<I> S>
33
  requires destructible<iter_value_t<I>>
34
  constexpr I destroy(I first, S last) noexcept;
35
+ template<nothrow-input-range R>
36
  requires destructible<range_value_t<R>>
37
  constexpr borrowed_iterator_t<R> destroy(R&& r) noexcept;
38
  }
39
  ```
40
 
 
59
  return first;
60
  ```
61
 
62
  ``` cpp
63
  namespace ranges {
64
+ template<nothrow-input-iterator I>
65
  requires destructible<iter_value_t<I>>
66
  constexpr I destroy_n(I first, iter_difference_t<I> n) noexcept;
67
  }
68
  ```
69
 
70
  *Effects:* Equivalent to:
71
 
72
  ``` cpp
73
+ return destroy(counted_iterator(std::move(first), n), default_sentinel).base();
74
  ```
75