]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: friend vs inherited guide confusion [PR117855]
authorPatrick Palka <ppalka@redhat.com>
Tue, 28 Jan 2025 14:27:02 +0000 (09:27 -0500)
committerPatrick Palka <ppalka@redhat.com>
Tue, 28 Jan 2025 14:27:02 +0000 (09:27 -0500)
commitea578dd251eaf6304b0c95acc107f9a4d63bee8f
tree5fff703cc21a817419400813248a5936dc6f5213
parent3ccbc8c9d182c380e396631b2b5a683de4fddba9
c++: friend vs inherited guide confusion [PR117855]

We recently started using the lang_decl_fn::context field to track
inheritedness of a deduction guide (for C++23 inherited CTAD).  This
new overloading of the field accidentally made DECL_FRIEND_CONTEXT
return non-NULL for inherited guides, which breaks the below testcase
during overload resolution with an inherited guide.

This patch fixes this by refining DECL_FRIEND_CONTEXT appropriately.

PR c++/117855

gcc/cp/ChangeLog:

* cp-tree.h (DECL_FRIEND_CONTEXT): Exclude deduction guides.

gcc/testsuite/ChangeLog:

* g++.dg/cpp23/class-deduction-inherited7.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/cp-tree.h
gcc/testsuite/g++.dg/cpp23/class-deduction-inherited7.C [new file with mode: 0644]