tmp/tmpv2e9a40u/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### General <a id="over.binary.general">[[over.binary.general]]</a>
|
| 2 |
+
|
| 3 |
+
A *binary operator function* is a function named `operator@` for a
|
| 4 |
+
binary operator `@` that is either a non-static member function
|
| 5 |
+
[[class.mfct]] with one non-object parameter or a non-member function
|
| 6 |
+
with two parameters. For an expression `x @ y` with subexpressions x and
|
| 7 |
+
y, the operator function is selected by overload resolution
|
| 8 |
+
[[over.match.oper]]. If a member function is selected, the expression is
|
| 9 |
+
interpreted as
|
| 10 |
+
|
| 11 |
+
``` bnf
|
| 12 |
+
x '.' operator '@' '(' y ')'
|
| 13 |
+
```
|
| 14 |
+
|
| 15 |
+
Otherwise, if a non-member function is selected, the expression is
|
| 16 |
+
interpreted as
|
| 17 |
+
|
| 18 |
+
``` bnf
|
| 19 |
+
operator '@' '(' x ',' y ')'
|
| 20 |
+
```
|
| 21 |
+
|
| 22 |
+
An *equality operator function* is an operator function for an equality
|
| 23 |
+
operator [[expr.eq]]. A *relational operator function* is an operator
|
| 24 |
+
function for a relational operator [[expr.rel]]. A
|
| 25 |
+
*three-way comparison operator function* is an operator function for the
|
| 26 |
+
three-way comparison operator [[expr.spaceship]]. A
|
| 27 |
+
*comparison operator function* is an equality operator function, a
|
| 28 |
+
relational operator function, or a three-way comparison operator
|
| 29 |
+
function.
|
| 30 |
+
|