c++: corresponding object parms [PR113191]
commit61b493f17e6fea5a0fb45b6a050259ca326c13a7
authorJason Merrill <jason@redhat.com>
Tue, 9 Jan 2024 10:15:01 +0000 (9 05:15 -0500)
committerJason Merrill <jason@redhat.com>
Thu, 11 Jan 2024 22:01:06 +0000 (11 17:01 -0500)
tree9ad8270bd387f0a92b7279c46c07aae2a03ce92a
parent9bac1d7839f129f93f159c27adaf472ee3ab23a2
c++: corresponding object parms [PR113191]

As discussed, our handling of corresponding object parameters needed to
handle the using-declaration case better.  And I took the opportunity to
share code between the add_method and cand_parms_match uses.

This patch specifically doesn't compare reversed parameters, but a follow-up
patch will.

PR c++/113191

gcc/cp/ChangeLog:

* class.cc (xobj_iobj_parameters_correspond): Add context parm.
(object_parms_correspond): Factor out of...
(add_method): ...here.
* method.cc (defaulted_late_check): Use it.
* call.cc (class_of_implicit_object): New.
(object_parms_correspond): Overload taking two candidates.
(cand_parms_match): Use it.
(joust): Check reversed before comparing constraints.
* cp-tree.h (object_parms_correspond): Declare.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/concepts-memfun4.C: New test.
gcc/cp/call.cc
gcc/cp/class.cc
gcc/cp/cp-tree.h
gcc/cp/method.cc
gcc/testsuite/g++.dg/cpp2a/concepts-memfun4.C [new file with mode: 0644]