From Jason Turner

[iterator.cust.move]

Diff to HTML by rtfpessoa

tmp/tmppc8z4o16/{from.md → to.md} RENAMED
@@ -4,16 +4,13 @@ The name `ranges::iter_move` denotes a customization point object
4
  [[customization.point.object]]. The expression `ranges::iter_move(E)`
5
  for a subexpression `E` is expression-equivalent to:
6
 
7
  - `iter_move(E)`, if `E` has class or enumeration type and
8
  `iter_move(E)` is a well-formed expression when treated as an
9
- unevaluated operand, with overload resolution performed in a context
10
- that does not include a declaration of `ranges::iter_move` but does
11
- include the declaration
12
- ``` cpp
13
- void iter_move();
14
- ```
15
  - Otherwise, if the expression `*E` is well-formed:
16
  - if `*E` is an lvalue, `std::move(*E)`;
17
  - otherwise, `*E`.
18
  - Otherwise, `ranges::iter_move(E)` is ill-formed. \[*Note 1*: This case
19
  can result in substitution failure when `ranges::iter_move(E)` appears
 
4
  [[customization.point.object]]. The expression `ranges::iter_move(E)`
5
  for a subexpression `E` is expression-equivalent to:
6
 
7
  - `iter_move(E)`, if `E` has class or enumeration type and
8
  `iter_move(E)` is a well-formed expression when treated as an
9
+ unevaluated operand, where the meaning of `iter_move` is established
10
+ as-if by performing argument-dependent lookup only
11
+ [[basic.lookup.argdep]].
 
 
 
12
  - Otherwise, if the expression `*E` is well-formed:
13
  - if `*E` is an lvalue, `std::move(*E)`;
14
  - otherwise, `*E`.
15
  - Otherwise, `ranges::iter_move(E)` is ill-formed. \[*Note 1*: This case
16
  can result in substitution failure when `ranges::iter_move(E)` appears