From Jason Turner

[over.call.object]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpbae62ehe/{from.md → to.md} +9 -13
tmp/tmpbae62ehe/{from.md → to.md} RENAMED
@@ -1,12 +1,12 @@
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
@@ -28,27 +28,23 @@ returning `R`”, a *surrogate call function* with the unique name
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
 
39
- [*Note 2*: When comparing the call against the function call operators,
40
- the implied object argument is compared against the implicit object
41
- parameter of the function call operator. When comparing the call against
42
- a surrogate call function, the implied object argument is compared
43
- against the first parameter of the surrogate call function. The
44
- conversion function from which the surrogate call function was derived
45
- will be used in the conversion sequence for that parameter since it
46
- converts the implied object argument to the appropriate function pointer
47
- or reference required by that first parameter. — *end note*]
48
 
49
- [*Example 1*:
50
 
51
  ``` cpp
52
  int f1(int);
53
  int f2(float);
54
  typedef int (*fp1)(int);
 
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 the results of a search for the name `operator()`
7
+ in the scope of `T`.
8
 
9
  In addition, for each non-explicit conversion function declared in `T`
10
  of the form
11
 
12
  ``` bnf
 
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.[^4]
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
 
39
+ [*Note 3*: When comparing the call against the function call operators,
40
+ the implied object argument is compared against the object parameter of
41
+ the function call operator. When comparing the call against a surrogate
42
+ call function, the implied object argument is compared against the first
43
+ parameter of the surrogate call function. — *end note*]
 
 
 
 
44
 
45
+ [*Example 2*:
46
 
47
  ``` cpp
48
  int f1(int);
49
  int f2(float);
50
  typedef int (*fp1)(int);