From Jason Turner

[common.iter.cust]

Diff to HTML by rtfpessoa

tmp/tmpqqckml2i/{from.md → to.md} RENAMED
@@ -1,24 +1,24 @@
1
  #### Customizations <a id="common.iter.cust">[[common.iter.cust]]</a>
2
 
3
  ``` cpp
4
- friend constexpr iter_rvalue_reference_t<I> iter_move(const common_iterator& i)
5
  noexcept(noexcept(ranges::iter_move(declval<const I&>())))
6
  requires input_iterator<I>;
7
  ```
8
 
9
- *Preconditions:* `holds_alternative<I>(i.v_)` is `true`.
10
 
11
  *Effects:* Equivalent to: `return ranges::iter_move(get<I>(i.v_));`
12
 
13
  ``` cpp
14
  template<indirectly_swappable<I> I2, class S2>
15
  friend constexpr void iter_swap(const common_iterator& x, const common_iterator<I2, S2>& y)
16
  noexcept(noexcept(ranges::iter_swap(declval<const I&>(), declval<const I2&>())));
17
  ```
18
 
19
- *Preconditions:* `holds_alternative<I>(x.v_)` and
20
- `holds_alternative<I2>(y.v_)` are each `true`.
21
 
22
  *Effects:* Equivalent to
23
  `ranges::iter_swap(get<I>(x.v_), get<I2>(y.v_))`.
24
 
 
1
  #### Customizations <a id="common.iter.cust">[[common.iter.cust]]</a>
2
 
3
  ``` cpp
4
+ friend constexpr decltype(auto) iter_move(const common_iterator& i)
5
  noexcept(noexcept(ranges::iter_move(declval<const I&>())))
6
  requires input_iterator<I>;
7
  ```
8
 
9
+ `holds_alternative<I>(i.v_)` is `true`.
10
 
11
  *Effects:* Equivalent to: `return ranges::iter_move(get<I>(i.v_));`
12
 
13
  ``` cpp
14
  template<indirectly_swappable<I> I2, class S2>
15
  friend constexpr void iter_swap(const common_iterator& x, const common_iterator<I2, S2>& y)
16
  noexcept(noexcept(ranges::iter_swap(declval<const I&>(), declval<const I2&>())));
17
  ```
18
 
19
+ `holds_alternative<I>(x.v_)` and `holds_alternative<I2>(y.v_)` are each
20
+ `true`.
21
 
22
  *Effects:* Equivalent to
23
  `ranges::iter_swap(get<I>(x.v_), get<I2>(y.v_))`.
24