From Jason Turner

[over.match.oper]

Diff to HTML by rtfpessoa

tmp/tmphrla19h5/{from.md → to.md} RENAMED
@@ -44,14 +44,14 @@ However, the operands are sequenced in the order prescribed for the
44
  built-in operator [[expr.compound]].
45
 
46
  **Table: Relationship between operator and function call notation** <a id="over.match.oper">[over.match.oper]</a>
47
 
48
  | Subclause | Expression | As member function | As non-member function |
49
- | ------------ | ---------- | ------------------- | ---------------------- |
50
  | (a)} |
51
  | (a, b)} |
52
- | [[over.ass]] | `a=b` | `(a).operator= (b)` | |
53
  | [[over.sub]] | `a[b]` | `(a).operator[](b)` | |
54
  | [[over.ref]] | `a->` | `(a).operator->( )` | |
55
  | (a, 0)} |
56
 
57
 
@@ -148,16 +148,12 @@ inline namespace N {
148
  bool d1 = 0 == D(); // OK, calls reversed #4; #5 does not forbid #4 as a rewrite target
149
  ```
150
 
151
  — *end example*]
152
 
153
- For the built-in assignment operators, conversions of the left operand
154
- are restricted as follows:
155
-
156
- - no temporaries are introduced to hold the left operand, and
157
- - no user-defined conversions are applied to the left operand to achieve
158
- a type match with the left-most parameter of a built-in candidate.
159
 
160
  For all other operators, no such restrictions apply.
161
 
162
  The set of candidate functions for overload resolution for some operator
163
  `@` is the union of the member candidates, the non-member candidates,
 
44
  built-in operator [[expr.compound]].
45
 
46
  **Table: Relationship between operator and function call notation** <a id="over.match.oper">[over.match.oper]</a>
47
 
48
  | Subclause | Expression | As member function | As non-member function |
49
+ | --------------- | ---------- | ------------------- | ---------------------- |
50
  | (a)} |
51
  | (a, b)} |
52
+ | [[over.assign]] | `a=b` | `(a).operator= (b)` | |
53
  | [[over.sub]] | `a[b]` | `(a).operator[](b)` | |
54
  | [[over.ref]] | `a->` | `(a).operator->( )` | |
55
  | (a, 0)} |
56
 
57
 
 
148
  bool d1 = 0 == D(); // OK, calls reversed #4; #5 does not forbid #4 as a rewrite target
149
  ```
150
 
151
  — *end example*]
152
 
153
+ For the first parameter of the built-in assignment operators, only
154
+ standard conversion sequences [[over.ics.scs]] are considered.
 
 
 
 
155
 
156
  For all other operators, no such restrictions apply.
157
 
158
  The set of candidate functions for overload resolution for some operator
159
  `@` is the union of the member candidates, the non-member candidates,