https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102670

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>:

https://gcc.gnu.org/g:6fa8e0896c6ec96eddcedb2b92502a7bbb525c03

commit r12-5372-g6fa8e0896c6ec96eddcedb2b92502a7bbb525c03
Author: Patrick Palka <ppa...@redhat.com>
Date:   Thu Nov 18 10:04:27 2021 -0500

    c++: unqual lookup performed twice w/ template-id ADL [PR102670]

    Here we're incorrectly performing unqualified lookup of 'adl' again at
    substitution time for the call adl<I>(t) (for which name lookup at parse
    time found nothing) which causes us to reject the testcase because the
    second unqualified lookup finds the later-declared variable template
    'adl', leading to confusion.  Fixed thusly.

    The testcase concepts-recursive-sat1.C needed to be adjusted to use ADL
    proper instead of relying on this incorrect second unqualified lookup.

            PR c++/102670

    gcc/cp/ChangeLog:

            * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: When looking
            for an identifier callee in the koenig_p case, also look through
            TEMPLATE_ID_EXPR.  Use tsubst_copy to substitute through the
            template arguments of the template-id.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-recursive-sat1.C: Adjust to use ADL
            proper.
            * g++.dg/cpp2a/fn-template23.C: New test.

Reply via email to