tmp/tmptoc567t5/{from.md → to.md}
RENAMED
|
@@ -8,11 +8,11 @@ functions in such contexts. The function selected is the one whose type
|
|
| 8 |
is identical to the function type of the target type required in the
|
| 9 |
context. That is, the class of which the function is a member is ignored
|
| 10 |
when matching a pointer-to-member-function type. The target can be
|
| 11 |
|
| 12 |
- an object or reference being initialized ([[dcl.init]],
|
| 13 |
-
[[dcl.init.ref]]),
|
| 14 |
- the left side of an assignment ([[expr.ass]]),
|
| 15 |
- a parameter of a function ([[expr.call]]),
|
| 16 |
- a parameter of a user-defined operator ([[over.oper]]),
|
| 17 |
- the return value of a function, operator function, or conversion (
|
| 18 |
[[stmt.return]]),
|
|
@@ -44,16 +44,16 @@ non-static member function is selected, the reference to the overloaded
|
|
| 44 |
function name is required to have the form of a pointer to member as
|
| 45 |
described in [[expr.unary.op]].
|
| 46 |
|
| 47 |
If more than one function is selected, any function template
|
| 48 |
specializations in the set are eliminated if the set also contains a
|
| 49 |
-
|
| 50 |
-
`F1` is eliminated if the set contains
|
| 51 |
-
|
| 52 |
-
function template of `F1` according to the
|
| 53 |
-
[[temp.func.order]]. After such eliminations,
|
| 54 |
-
exactly one selected function.
|
| 55 |
|
| 56 |
``` cpp
|
| 57 |
int f(double);
|
| 58 |
int f(int);
|
| 59 |
int (*pfd)(double) = &f; // selects f(double)
|
|
|
|
| 8 |
is identical to the function type of the target type required in the
|
| 9 |
context. That is, the class of which the function is a member is ignored
|
| 10 |
when matching a pointer-to-member-function type. The target can be
|
| 11 |
|
| 12 |
- an object or reference being initialized ([[dcl.init]],
|
| 13 |
+
[[dcl.init.ref]], [[dcl.init.list]]),
|
| 14 |
- the left side of an assignment ([[expr.ass]]),
|
| 15 |
- a parameter of a function ([[expr.call]]),
|
| 16 |
- a parameter of a user-defined operator ([[over.oper]]),
|
| 17 |
- the return value of a function, operator function, or conversion (
|
| 18 |
[[stmt.return]]),
|
|
|
|
| 44 |
function name is required to have the form of a pointer to member as
|
| 45 |
described in [[expr.unary.op]].
|
| 46 |
|
| 47 |
If more than one function is selected, any function template
|
| 48 |
specializations in the set are eliminated if the set also contains a
|
| 49 |
+
function that is not a function template specialization, and any given
|
| 50 |
+
function template specialization `F1` is eliminated if the set contains
|
| 51 |
+
a second function template specialization whose function template is
|
| 52 |
+
more specialized than the function template of `F1` according to the
|
| 53 |
+
partial ordering rules of [[temp.func.order]]. After such eliminations,
|
| 54 |
+
if any, there shall remain exactly one selected function.
|
| 55 |
|
| 56 |
``` cpp
|
| 57 |
int f(double);
|
| 58 |
int f(int);
|
| 59 |
int (*pfd)(double) = &f; // selects f(double)
|