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

--- Comment #3 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:f07778f6f92111aa0abfd0f669b148a0bda537a9

commit r13-1687-gf07778f6f92111aa0abfd0f669b148a0bda537a9
Author: Patrick Palka <ppa...@redhat.com>
Date:   Wed Jul 13 14:01:28 2022 -0400

    c++: dependence of constrained memfn from current inst [PR105842]

    Here we incorrectly deem the calls to func1, func2 and tmpl2 as
    ambiguous ahead of time ultimately because we mishandle dependence
    of a constrained member function from the current instantiation.

    In type_dependent_expression_p, we already consider dependence of a
    TEMPLATE_DECL's constraints (via uses_outer_template_parms), but
    neglect to do the same for a FUNCTION_DECL (such as that for func1).

    And in satisfy_declaration_constraints, we give up if _any_ template
    argument is dependent, but for non-dependent member functions from
    the current instantiation (such as func2 and tmpl2), we can and must
    check constraints as long as the innermost arguments aren't dependent.

            PR c++/105842

    gcc/cp/ChangeLog:

            * constraint.cc (satisfy_declaration_constraints): Refine early
            exit test for argument dependence.
            * cp-tree.h (uses_outer_template_parms_in_constraints): Declare.
            * pt.cc (template_class_depth): Handle TI_TEMPLATE being a
            FIELD_DECL.
            (usse_outer_template_parms): Factor out constraint dependence
            test into ...
            (uses_outer_template_parms_in_constraints): ... here.
            (type_dependent_expression_p): Use it for FUNCTION_DECL.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-memtmpl6.C: New test.

Reply via email to