]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: maybe_dependent_member_ref and typenames [PR118626]
authorPatrick Palka <ppalka@redhat.com>
Sun, 6 Apr 2025 02:39:15 +0000 (22:39 -0400)
committerPatrick Palka <ppalka@redhat.com>
Sun, 6 Apr 2025 02:39:15 +0000 (22:39 -0400)
commit7a91400c142899ea0aeb8b62577496cf24c68156
tree4b050c8ae9fca711abfd314eb31229ef097f4822
parent58c5055162b698dab6a493b1f90c18af1a34ac65
c++: maybe_dependent_member_ref and typenames [PR118626]

Here during maybe_dependent_member_ref for accepted_type<_Up>, we
correctly don't strip the typedef because it's a complex one (its
defaulted template parameter isn't used in its definition) and so
we recurse to consider its corresponding TYPE_DECL.

We then incorrectly decide to not rewrite this use because of the
TYPENAME_TYPE shortcut.  But I don't think this shortcut should apply to
a typedef TYPE_DECL.

PR c++/118626

gcc/cp/ChangeLog:

* pt.cc (maybe_dependent_member_ref): Restrict TYPENAME_TYPE
shortcut to non-typedef TYPE_DECL.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/class-deduction-alias25a.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp2a/class-deduction-alias25a.C [new file with mode: 0644]