tmp/tmprmjteuac/{from.md → to.md}
RENAMED
|
@@ -8,11 +8,11 @@ name in the *unqualified-id* does not find any
|
|
| 8 |
- function declaration inhabiting a block scope, or
|
| 9 |
- declaration not of a function or function template
|
| 10 |
|
| 11 |
then lookup for the name also includes the result of
|
| 12 |
*argument-dependent lookup* in a set of associated namespaces that
|
| 13 |
-
depends on the types of the arguments (and for template template
|
| 14 |
arguments, the namespace of the template argument), as specified below.
|
| 15 |
|
| 16 |
[*Example 1*:
|
| 17 |
|
| 18 |
``` cpp
|
|
@@ -74,26 +74,34 @@ lookup does not apply and the friend function `f` is not found.
|
|
| 74 |
|
| 75 |
— *end note*]
|
| 76 |
|
| 77 |
For each argument type `T` in the function call, there is a set of zero
|
| 78 |
or more *associated entities* to be considered. The set of entities is
|
| 79 |
-
determined entirely by the types of the function arguments (and any
|
| 80 |
template template arguments). Any *typedef-name*s and
|
| 81 |
*using-declaration*s used to specify the types do not contribute to this
|
| 82 |
set. The set of entities is determined in the following way:
|
| 83 |
|
| 84 |
-
- If `T` is
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
- If `T` is a class type (including unions), its associated entities
|
| 86 |
-
are: the class itself; the class of which it is a member, if any; and
|
| 87 |
-
its direct and indirect base classes.
|
| 88 |
-
template specialization, its associated
|
| 89 |
-
entities associated with the types of the
|
| 90 |
-
for template type parameters; the
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
|
|
|
| 95 |
- If `T` is an enumeration type, its associated entities are `T` and, if
|
| 96 |
it is a class member, the member’s class.
|
| 97 |
- If `T` is a pointer to `U` or an array of `U`, its associated entities
|
| 98 |
are those associated with `U`.
|
| 99 |
- If `T` is a function type, its associated entities are those
|
|
@@ -109,12 +117,12 @@ set. The set of entities is determined in the following way:
|
|
| 109 |
In addition, if the argument is an overload set or the address of such a
|
| 110 |
set, its associated entities are the union of those associated with each
|
| 111 |
of the members of the set, i.e., the entities associated with its
|
| 112 |
parameter types and return type. Additionally, if the aforementioned
|
| 113 |
overload set is named with a *template-id*, its associated entities also
|
| 114 |
-
include its template
|
| 115 |
-
type
|
| 116 |
|
| 117 |
The *associated namespaces* for a call are the innermost enclosing
|
| 118 |
non-inline namespaces for its associated entities as well as every
|
| 119 |
element of the inline namespace set [[namespace.def]] of those
|
| 120 |
namespaces. Argument-dependent lookup finds all declarations of
|
|
@@ -183,11 +191,11 @@ void test() {
|
|
| 183 |
}
|
| 184 |
```
|
| 185 |
|
| 186 |
— *end example*]
|
| 187 |
|
| 188 |
-
[*Note
|
| 189 |
considered by ordinary unqualified lookup. — *end note*]
|
| 190 |
|
| 191 |
[*Example 3*:
|
| 192 |
|
| 193 |
``` cpp
|
|
|
|
| 8 |
- function declaration inhabiting a block scope, or
|
| 9 |
- declaration not of a function or function template
|
| 10 |
|
| 11 |
then lookup for the name also includes the result of
|
| 12 |
*argument-dependent lookup* in a set of associated namespaces that
|
| 13 |
+
depends on the types of the arguments (and for type template template
|
| 14 |
arguments, the namespace of the template argument), as specified below.
|
| 15 |
|
| 16 |
[*Example 1*:
|
| 17 |
|
| 18 |
``` cpp
|
|
|
|
| 74 |
|
| 75 |
— *end note*]
|
| 76 |
|
| 77 |
For each argument type `T` in the function call, there is a set of zero
|
| 78 |
or more *associated entities* to be considered. The set of entities is
|
| 79 |
+
determined entirely by the types of the function arguments (and any type
|
| 80 |
template template arguments). Any *typedef-name*s and
|
| 81 |
*using-declaration*s used to specify the types do not contribute to this
|
| 82 |
set. The set of entities is determined in the following way:
|
| 83 |
|
| 84 |
+
- If `T` is `std::meta::info` [[meta.syn]], its associated set of
|
| 85 |
+
entities is the singleton containing the enumeration type
|
| 86 |
+
`std::meta::operators` [[meta.reflection.operators]]. \[*Note 2*: The
|
| 87 |
+
`std::meta::info` type is a type alias, so an explicit rule is needed
|
| 88 |
+
to associate calls whose arguments are reflections with the namespace
|
| 89 |
+
`std::meta`. — *end note*]
|
| 90 |
+
- If `T` is any other fundamental type, its associated set of entities
|
| 91 |
+
is empty.
|
| 92 |
- If `T` is a class type (including unions), its associated entities
|
| 93 |
+
are: the class itself; the class of which it is a member, if any; and,
|
| 94 |
+
if it is a complete type, its direct and indirect base classes.
|
| 95 |
+
Furthermore, if `T` is a class template specialization, its associated
|
| 96 |
+
entities also include: the entities associated with the types of the
|
| 97 |
+
template arguments provided for template type parameters; the
|
| 98 |
+
templates used as type template template arguments; and the classes of
|
| 99 |
+
which any member templates used as type template template arguments
|
| 100 |
+
are members. \[*Note 3*: Constant template arguments, variable
|
| 101 |
+
template template arguments, and concept template arguments do not
|
| 102 |
+
contribute to the set of associated entities. — *end note*]
|
| 103 |
- If `T` is an enumeration type, its associated entities are `T` and, if
|
| 104 |
it is a class member, the member’s class.
|
| 105 |
- If `T` is a pointer to `U` or an array of `U`, its associated entities
|
| 106 |
are those associated with `U`.
|
| 107 |
- If `T` is a function type, its associated entities are those
|
|
|
|
| 117 |
In addition, if the argument is an overload set or the address of such a
|
| 118 |
set, its associated entities are the union of those associated with each
|
| 119 |
of the members of the set, i.e., the entities associated with its
|
| 120 |
parameter types and return type. Additionally, if the aforementioned
|
| 121 |
overload set is named with a *template-id*, its associated entities also
|
| 122 |
+
include its template template arguments and those associated with its
|
| 123 |
+
type template arguments.
|
| 124 |
|
| 125 |
The *associated namespaces* for a call are the innermost enclosing
|
| 126 |
non-inline namespaces for its associated entities as well as every
|
| 127 |
element of the inline namespace set [[namespace.def]] of those
|
| 128 |
namespaces. Argument-dependent lookup finds all declarations of
|
|
|
|
| 191 |
}
|
| 192 |
```
|
| 193 |
|
| 194 |
— *end example*]
|
| 195 |
|
| 196 |
+
[*Note 4*: The associated namespace can include namespaces already
|
| 197 |
considered by ordinary unqualified lookup. — *end note*]
|
| 198 |
|
| 199 |
[*Example 3*:
|
| 200 |
|
| 201 |
``` cpp
|