From Jason Turner

[reverse.iter.nonmember]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpvx6i_vwv/{from.md → to.md} +69 -0
tmp/tmpvx6i_vwv/{from.md → to.md} RENAMED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Non-member functions <a id="reverse.iter.nonmember">[[reverse.iter.nonmember]]</a>
2
+
3
+ ``` cpp
4
+ template<class Iterator1, class Iterator2>
5
+ constexpr auto operator-(
6
+ const reverse_iterator<Iterator1>& x,
7
+ const reverse_iterator<Iterator2>& y) -> decltype(y.base() - x.base());
8
+ ```
9
+
10
+ *Returns:* `y.base() - x.base()`.
11
+
12
+ ``` cpp
13
+ template<class Iterator>
14
+ constexpr reverse_iterator<Iterator> operator+(
15
+ typename reverse_iterator<Iterator>::difference_type n,
16
+ const reverse_iterator<Iterator>& x);
17
+ ```
18
+
19
+ *Returns:* `reverse_iterator<Iterator>(x.base() - n)`.
20
+
21
+ ``` cpp
22
+ friend constexpr iter_rvalue_reference_t<Iterator>
23
+ iter_move(const reverse_iterator& i) noexcept(see below);
24
+ ```
25
+
26
+ *Effects:* Equivalent to:
27
+
28
+ ``` cpp
29
+ auto tmp = i.base();
30
+ return ranges::iter_move(--tmp);
31
+ ```
32
+
33
+ *Remarks:* The expression in `noexcept` is equivalent to:
34
+
35
+ ``` cpp
36
+ is_nothrow_copy_constructible_v<Iterator> &&
37
+ noexcept(ranges::iter_move(--declval<Iterator&>()))
38
+ ```
39
+
40
+ ``` cpp
41
+ template<indirectly_swappable<Iterator> Iterator2>
42
+ friend constexpr void
43
+ iter_swap(const reverse_iterator& x,
44
+ const reverse_iterator<Iterator2>& y) noexcept(see below);
45
+ ```
46
+
47
+ *Effects:* Equivalent to:
48
+
49
+ ``` cpp
50
+ auto xtmp = x.base();
51
+ auto ytmp = y.base();
52
+ ranges::iter_swap(--xtmp, --ytmp);
53
+ ```
54
+
55
+ *Remarks:* The expression in `noexcept` is equivalent to:
56
+
57
+ ``` cpp
58
+ is_nothrow_copy_constructible_v<Iterator> &&
59
+ is_nothrow_copy_constructible_v<Iterator2> &&
60
+ noexcept(ranges::iter_swap(--declval<Iterator&>(), --declval<Iterator2&>()))
61
+ ```
62
+
63
+ ``` cpp
64
+ template<class Iterator>
65
+ constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i);
66
+ ```
67
+
68
+ *Returns:* `reverse_iterator<Iterator>(i)`.
69
+