From Jason Turner

[move.iter.nonmember]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpq5_p9t1z/{from.md → to.md} +32 -7
tmp/tmpq5_p9t1z/{from.md → to.md} RENAMED
@@ -1,26 +1,51 @@
1
- ##### `move_iterator` non-member functions <a id="move.iter.nonmember">[[move.iter.nonmember]]</a>
2
 
3
  ``` cpp
4
  template<class Iterator1, class Iterator2>
5
- constexpr auto operator-(
6
- const move_iterator<Iterator1>& x,
7
- const move_iterator<Iterator2>& y) -> decltype(x.base() - y.base());
 
 
 
 
 
 
8
  ```
9
 
10
  *Returns:* `x.base() - y.base()`.
11
 
12
  ``` cpp
13
  template<class Iterator>
14
- constexpr move_iterator<Iterator> operator+(
15
- typename move_iterator<Iterator>::difference_type n, const move_iterator<Iterator>& x);
16
  ```
17
 
 
 
18
  *Returns:* `x + n`.
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  ``` cpp
21
  template<class Iterator>
22
  constexpr move_iterator<Iterator> make_move_iterator(Iterator i);
23
  ```
24
 
25
- *Returns:* `move_iterator<Iterator>(i)`.
26
 
 
1
+ #### Non-member functions <a id="move.iter.nonmember">[[move.iter.nonmember]]</a>
2
 
3
  ``` cpp
4
  template<class Iterator1, class Iterator2>
5
+ constexpr auto operator-(const move_iterator<Iterator1>& x,
6
+ const move_iterator<Iterator2>& y)
7
+ -> decltype(x.base() - y.base());
8
+ template<sized_sentinel_for<Iterator> S>
9
+ friend constexpr iter_difference_t<Iterator>
10
+ operator-(const move_sentinel<S>& x, const move_iterator& y);
11
+ template<sized_sentinel_for<Iterator> S>
12
+ friend constexpr iter_difference_t<Iterator>
13
+ operator-(const move_iterator& x, const move_sentinel<S>& y);
14
  ```
15
 
16
  *Returns:* `x.base() - y.base()`.
17
 
18
  ``` cpp
19
  template<class Iterator>
20
+ constexpr move_iterator<Iterator>
21
+ operator+(iter_difference_t<Iterator> n, const move_iterator<Iterator>& x);
22
  ```
23
 
24
+ *Constraints:* `x + n` is well-formed and has type `Iterator`.
25
+
26
  *Returns:* `x + n`.
27
 
28
+ ``` cpp
29
+ friend constexpr iter_rvalue_reference_t<Iterator>
30
+ iter_move(const move_iterator& i)
31
+ noexcept(noexcept(ranges::iter_move(i.current)));
32
+ ```
33
+
34
+ *Effects:* Equivalent to: `return ranges::iter_move(i.current);`
35
+
36
+ ``` cpp
37
+ template<indirectly_swappable<Iterator> Iterator2>
38
+ friend constexpr void
39
+ iter_swap(const move_iterator& x, const move_iterator<Iterator2>& y)
40
+ noexcept(noexcept(ranges::iter_swap(x.current, y.current)));
41
+ ```
42
+
43
+ *Effects:* Equivalent to: `ranges::iter_swap(x.current, y.current)`.
44
+
45
  ``` cpp
46
  template<class Iterator>
47
  constexpr move_iterator<Iterator> make_move_iterator(Iterator i);
48
  ```
49
 
50
+ *Returns:* `move_iterator<Iterator>(std::move(i))`.
51