tmp/tmp02gbcvub/{from.md → to.md}
RENAMED
|
@@ -1,45 +1,38 @@
|
|
| 1 |
##### Call to object of class type <a id="over.call.object">[[over.call.object]]</a>
|
| 2 |
|
| 3 |
-
If the *
|
| 4 |
a class object of type “cv `T`”, then the set of candidate functions
|
| 5 |
includes at least the function call operators of `T`. The function call
|
| 6 |
operators of `T` are obtained by ordinary lookup of the name
|
| 7 |
`operator()` in the context of `(E).operator()`.
|
| 8 |
|
| 9 |
In addition, for each non-explicit conversion function declared in `T`
|
| 10 |
of the form
|
| 11 |
|
| 12 |
``` bnf
|
| 13 |
-
|
| 14 |
```
|
| 15 |
|
| 16 |
-
where *cv-qualifier* is the same cv-qualification as,
|
| 17 |
-
cv-qualification than, cv, and where *conversion-type-id*
|
| 18 |
-
type “pointer to function of (`P₁`, …, `Pₙ`) returning `R`”,
|
| 19 |
-
“reference to pointer to function of (`P₁`, …, `Pₙ`)
|
| 20 |
-
the type “reference to function of (`P₁`, …, `Pₙ`)
|
| 21 |
-
*surrogate call function* with the unique name
|
| 22 |
-
having the form
|
| 23 |
|
| 24 |
``` bnf
|
| 25 |
-
'R' call-function '(' conversion-type-id \ %
|
| 26 |
'F, P₁ a₁, …, Pₙ aₙ)' '{ return F (a₁, …, aₙ); }'
|
| 27 |
```
|
| 28 |
|
| 29 |
is also considered as a candidate function. Similarly, surrogate call
|
| 30 |
functions are added to the set of candidate functions for each
|
| 31 |
non-explicit conversion function declared in a base class of `T`
|
| 32 |
provided the function is not hidden within `T` by another intervening
|
| 33 |
-
declaration[^5]
|
| 34 |
-
|
| 35 |
-
If such a surrogate call function is selected by overload resolution,
|
| 36 |
-
the corresponding conversion function will be called to convert `E` to
|
| 37 |
-
the appropriate function pointer or reference, and the function will
|
| 38 |
-
then be invoked with the arguments of the call. If the conversion
|
| 39 |
-
function cannot be called (e.g., because of an ambiguity), the program
|
| 40 |
-
is ill-formed.
|
| 41 |
|
| 42 |
The argument list submitted to overload resolution consists of the
|
| 43 |
argument expressions present in the function call syntax preceded by the
|
| 44 |
implied object argument `(E)`.
|
| 45 |
|
|
|
|
| 1 |
##### Call to object of class type <a id="over.call.object">[[over.call.object]]</a>
|
| 2 |
|
| 3 |
+
If the *postfix-expression* `E` in the function call syntax evaluates to
|
| 4 |
a class object of type “cv `T`”, then the set of candidate functions
|
| 5 |
includes at least the function call operators of `T`. The function call
|
| 6 |
operators of `T` are obtained by ordinary lookup of the name
|
| 7 |
`operator()` in the context of `(E).operator()`.
|
| 8 |
|
| 9 |
In addition, for each non-explicit conversion function declared in `T`
|
| 10 |
of the form
|
| 11 |
|
| 12 |
``` bnf
|
| 13 |
+
operator conversion-type-id '( )' cv-qualifier-seqₒₚₜ ref-qualifierₒₚₜ noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ ';'
|
| 14 |
```
|
| 15 |
|
| 16 |
+
where the optional *cv-qualifier-seq* is the same cv-qualification as,
|
| 17 |
+
or a greater cv-qualification than, cv, and where *conversion-type-id*
|
| 18 |
+
denotes the type “pointer to function of (`P₁`, …, `Pₙ`) returning `R`”,
|
| 19 |
+
or the type “reference to pointer to function of (`P₁`, …, `Pₙ`)
|
| 20 |
+
returning `R`”, or the type “reference to function of (`P₁`, …, `Pₙ`)
|
| 21 |
+
returning `R`”, a *surrogate call function* with the unique name
|
| 22 |
+
*call-function* and having the form
|
| 23 |
|
| 24 |
``` bnf
|
| 25 |
+
'R' *call-function* '(' conversion-type-id \ %
|
| 26 |
'F, P₁ a₁, …, Pₙ aₙ)' '{ return F (a₁, …, aₙ); }'
|
| 27 |
```
|
| 28 |
|
| 29 |
is also considered as a candidate function. Similarly, surrogate call
|
| 30 |
functions are added to the set of candidate functions for each
|
| 31 |
non-explicit conversion function declared in a base class of `T`
|
| 32 |
provided the function is not hidden within `T` by another intervening
|
| 33 |
+
declaration.[^5]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
The argument list submitted to overload resolution consists of the
|
| 36 |
argument expressions present in the function call syntax preceded by the
|
| 37 |
implied object argument `(E)`.
|
| 38 |
|