On 5/12/20 4:18 PM, Marek Polacek wrote:
I noticed that we don't implement [basic.lookup.argdep]/3: quite correctly;
it says "If X (the lookup set produced by unqualified lookup) contains
-- a block-scope function declaration that is not a using-declaration
[...]
then Y (the lookup set produced by ADL) is empty."
but we were still performing ADL in fn1 in the attached test.  The
problem was that we were only looking at the first function in the
overload set which in this case happened to be a using-declaration, and
those don't suppress ADL.  We have to look through the whole set to find
out if unqualified lookup found a block-scope function declaration, or
a member function declaration.

Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?

        PR c++/95074
        * parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: When
        looking for a block-scope function declaration, look through the whole
        set, not just the first function in the overload set.


ok, thanks!


--
Nathan Sidwell

Reply via email to