Created on 1998-10-24.00:00:00 last changed 318 months ago
Rationale (04/99): The proposal would also apply to local using-declarations (per Mike Ball) and was therefore deemed undesirable. The ambiguity issue is dealt with in Core issue 1
Given the following test case:
enum E { e1, e2, e3 };
void f(int, E e = e1);
void f(E, E e = e1);
void g() {
void f(long, E e = e2);
f(1); // calls ::f(int, E)
f(e1); // ?
}
First note that Koenig lookup breaks the concept of hiding functions through
local extern declarations as illustrated by the call `f(1)'. Should
the WP show this as an example?
Second, it appears the WP is silent as to what happens with the call `f(e1)': do the different default arguments create an ambiguity? is the local choice preferred? or the global?
Tentative Resolution (10/98) In 6.5.4 [basic.lookup.argdep] paragraph 2, change
If the ordinary unqualified lookup of the name finds the declaration of a class member function, the associated namespaces and classes are not considered.to
If the ordinary unqualified lookup of the name finds the declaration of a class member function or the declaration of a function at block scope, the associated namespaces and classes are not considered.
Rationale (04/99): The proposal would also apply to local using-declarations (per Mike Ball) and was therefore deemed undesirable. The ambiguity issue is dealt with in Core issue 1
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 1999-09-14 00:00:00 | admin | set | messages: + msg183 |
| 1999-09-14 00:00:00 | admin | set | status: review -> dup |
| 1998-10-24 00:00:00 | admin | create | |