From Jason Turner

[over.call.object]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp02gbcvub/{from.md → to.md} +11 -18
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 *primary-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 ref-qualifierₒₚₜ noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ ';'
14
  ```
15
 
16
- where *cv-qualifier* is the same cv-qualification as, or a greater
17
- cv-qualification than, cv, and where *conversion-type-id* denotes the
18
- type “pointer to function of (`P₁`, …, `Pₙ`) returning `R`”, or the type
19
- “reference to pointer to function of (`P₁`, …, `Pₙ`) returning `R`”, or
20
- the type “reference to function of (`P₁`, …, `Pₙ`) returning `R`”, a
21
- *surrogate call function* with the unique name *call-function* and
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