tmp/tmpz5z877ku/{from.md → to.md}
RENAMED
|
@@ -88,11 +88,11 @@ T operator-(T);
|
|
| 88 |
|
| 89 |
For every promoted integral type *T*, there exist candidate operator
|
| 90 |
functions of the form
|
| 91 |
|
| 92 |
``` cpp
|
| 93 |
-
T operator
|
| 94 |
```
|
| 95 |
|
| 96 |
For every quintuple (*C1*, *C2*, *T*, *CV1*, *CV2*), where *C2* is a
|
| 97 |
class type, *C1* is the same type as C2 or is a derived class of C2, *T*
|
| 98 |
is an object type or a function type, and *CV1* and *CV2* are
|
|
@@ -101,11 +101,13 @@ form
|
|
| 101 |
|
| 102 |
``` cpp
|
| 103 |
CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
|
| 104 |
```
|
| 105 |
|
| 106 |
-
where *CV12* is the union of *CV1* and *CV2*.
|
|
|
|
|
|
|
| 107 |
|
| 108 |
For every pair of promoted arithmetic types *L* and *R*, there exist
|
| 109 |
candidate operator functions of the form
|
| 110 |
|
| 111 |
``` cpp
|
|
@@ -140,24 +142,24 @@ candidate operator functions of the form
|
|
| 140 |
|
| 141 |
``` cpp
|
| 142 |
std::ptrdiff_t operator-(T, T);
|
| 143 |
```
|
| 144 |
|
| 145 |
-
For every *T*, where *T* is an enumeration type
|
| 146 |
-
|
| 147 |
|
| 148 |
``` cpp
|
| 149 |
bool operator<(T, T);
|
| 150 |
bool operator>(T, T);
|
| 151 |
bool operator<=(T, T);
|
| 152 |
bool operator>=(T, T);
|
| 153 |
bool operator==(T, T);
|
| 154 |
bool operator!=(T, T);
|
| 155 |
```
|
| 156 |
|
| 157 |
-
For every pointer to member type *T*
|
| 158 |
-
functions of the form
|
| 159 |
|
| 160 |
``` cpp
|
| 161 |
bool operator==(T, T);
|
| 162 |
bool operator!=(T, T);
|
| 163 |
```
|
|
@@ -294,10 +296,11 @@ T operator?:(bool, T, T);
|
|
| 294 |
[expr]: expr.md#expr
|
| 295 |
[expr.ass]: expr.md#expr.ass
|
| 296 |
[expr.call]: expr.md#expr.call
|
| 297 |
[expr.cast]: expr.md#expr.cast
|
| 298 |
[expr.cond]: expr.md#expr.cond
|
|
|
|
| 299 |
[expr.prim]: expr.md#expr.prim
|
| 300 |
[expr.static.cast]: expr.md#expr.static.cast
|
| 301 |
[expr.sub]: expr.md#expr.sub
|
| 302 |
[expr.type.conv]: expr.md#expr.type.conv
|
| 303 |
[expr.unary.op]: expr.md#expr.unary.op
|
|
@@ -356,13 +359,13 @@ T operator?:(bool, T, T);
|
|
| 356 |
ignored.
|
| 357 |
|
| 358 |
[^2]: The process of argument deduction fully determines the parameter
|
| 359 |
types of the function template specializations, i.e., the parameters
|
| 360 |
of function template specializations contain no template parameter
|
| 361 |
-
types. Therefore
|
| 362 |
-
|
| 363 |
-
overload resolution.
|
| 364 |
|
| 365 |
[^3]: Note that cv-qualifiers on the type of objects are significant in
|
| 366 |
overload resolution for both glvalue and class prvalue objects.
|
| 367 |
|
| 368 |
[^4]: An implied object argument must be contrived to correspond to the
|
|
|
|
| 88 |
|
| 89 |
For every promoted integral type *T*, there exist candidate operator
|
| 90 |
functions of the form
|
| 91 |
|
| 92 |
``` cpp
|
| 93 |
+
T operator~(T);
|
| 94 |
```
|
| 95 |
|
| 96 |
For every quintuple (*C1*, *C2*, *T*, *CV1*, *CV2*), where *C2* is a
|
| 97 |
class type, *C1* is the same type as C2 or is a derived class of C2, *T*
|
| 98 |
is an object type or a function type, and *CV1* and *CV2* are
|
|
|
|
| 101 |
|
| 102 |
``` cpp
|
| 103 |
CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
|
| 104 |
```
|
| 105 |
|
| 106 |
+
where *CV12* is the union of *CV1* and *CV2*. The return type is shown
|
| 107 |
+
for exposition only; see [[expr.mptr.oper]] for the determination of
|
| 108 |
+
the operator’s result type.
|
| 109 |
|
| 110 |
For every pair of promoted arithmetic types *L* and *R*, there exist
|
| 111 |
candidate operator functions of the form
|
| 112 |
|
| 113 |
``` cpp
|
|
|
|
| 142 |
|
| 143 |
``` cpp
|
| 144 |
std::ptrdiff_t operator-(T, T);
|
| 145 |
```
|
| 146 |
|
| 147 |
+
For every *T*, where *T* is an enumeration type or a pointer type, there
|
| 148 |
+
exist candidate operator functions of the form
|
| 149 |
|
| 150 |
``` cpp
|
| 151 |
bool operator<(T, T);
|
| 152 |
bool operator>(T, T);
|
| 153 |
bool operator<=(T, T);
|
| 154 |
bool operator>=(T, T);
|
| 155 |
bool operator==(T, T);
|
| 156 |
bool operator!=(T, T);
|
| 157 |
```
|
| 158 |
|
| 159 |
+
For every pointer to member type *T* or type `std::nullptr_t` there
|
| 160 |
+
exist candidate operator functions of the form
|
| 161 |
|
| 162 |
``` cpp
|
| 163 |
bool operator==(T, T);
|
| 164 |
bool operator!=(T, T);
|
| 165 |
```
|
|
|
|
| 296 |
[expr]: expr.md#expr
|
| 297 |
[expr.ass]: expr.md#expr.ass
|
| 298 |
[expr.call]: expr.md#expr.call
|
| 299 |
[expr.cast]: expr.md#expr.cast
|
| 300 |
[expr.cond]: expr.md#expr.cond
|
| 301 |
+
[expr.mptr.oper]: expr.md#expr.mptr.oper
|
| 302 |
[expr.prim]: expr.md#expr.prim
|
| 303 |
[expr.static.cast]: expr.md#expr.static.cast
|
| 304 |
[expr.sub]: expr.md#expr.sub
|
| 305 |
[expr.type.conv]: expr.md#expr.type.conv
|
| 306 |
[expr.unary.op]: expr.md#expr.unary.op
|
|
|
|
| 359 |
ignored.
|
| 360 |
|
| 361 |
[^2]: The process of argument deduction fully determines the parameter
|
| 362 |
types of the function template specializations, i.e., the parameters
|
| 363 |
of function template specializations contain no template parameter
|
| 364 |
+
types. Therefore, except where specified otherwise, function
|
| 365 |
+
template specializations and non-template functions ([[dcl.fct]])
|
| 366 |
+
are treated equivalently for the remainder of overload resolution.
|
| 367 |
|
| 368 |
[^3]: Note that cv-qualifiers on the type of objects are significant in
|
| 369 |
overload resolution for both glvalue and class prvalue objects.
|
| 370 |
|
| 371 |
[^4]: An implied object argument must be contrived to correspond to the
|