aboutsummaryrefslogtreecommitdiff
path: root/gcc/range-op-float.cc
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2023-04-13 16:02:21 -0400
committerPatrick Palka <ppalka@redhat.com>2023-04-13 16:02:21 -0400
commit50dc52e853ff267ad1f4c98571c262017b0536f8 (patch)
tree311b6c8f217974e3959d8a7da177f63964405261 /gcc/range-op-float.cc
parentf32f7881fb0db085479525b5a23db5dabd990c3b (diff)
downloadgcc-50dc52e853ff267ad1f4c98571c262017b0536f8.zip
gcc-50dc52e853ff267ad1f4c98571c262017b0536f8.tar.gz
gcc-50dc52e853ff267ad1f4c98571c262017b0536f8.tar.bz2
c++: 'typename T::X' vs 'struct T::X' lookup [PR109420]
r13-6098-g46711ff8e60d64 made make_typename_type no longer ignore non-types during the lookup, unless the TYPENAME_TYPE in question was followed by the :: scope resolution operator. But there is another exception to this rule: we need to ignore non-types during the lookup also if the TYPENAME_TYPE was named with a tag other than 'typename', such as 'struct' or 'enum', since in that case we're dealing with an elaborated-type-specifier and so [basic.lookup.elab] applies. This patch implements this additional exception. PR c++/109420 gcc/cp/ChangeLog: * decl.cc (make_typename_type): Also ignore non-types during the lookup if tag_type corresponds to an elaborated-type-specifier. * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or enum_type as tag_type to make_typename_type accordingly instead of always passing typename_type. gcc/testsuite/ChangeLog: * g++.dg/template/typename27.C: New test.
Diffstat (limited to 'gcc/range-op-float.cc')
0 files changed, 0 insertions, 0 deletions