[Bug c++/122192] [13/14/15 Regression] Lookup for a dependent nested type as a base-specifier should be type-only

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 28 14:35:51 GMT 2025


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

--- Comment #15 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by Patrick Palka
<ppalka@gcc.gnu.org>:

https://gcc.gnu.org/g:df569c064eac2f30c6f19fe5db931cdad0b2abcb

commit r15-10461-gdf569c064eac2f30c6f19fe5db931cdad0b2abcb
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Oct 10 10:25:25 2025 -0400

    c++: base-specifier name lookup is type-only [PR122192]

    The r13-6098 change to make TYPENAME_TYPE no longer always ignore
    non-type bindings needs another exception: base-specifiers that are
    represented as TYPENAME_TYPE, for which lookup must be type-only (by
    [class.derived.general]/2).  This patch fixes this by giving such
    TYPENAME_TYPEs a tag type of class_type rather than typename_type so
    that we treat them like elaborated-type-specifiers (another type-only
    lookup situation).

            PR c++/122192

    gcc/cp/ChangeLog:

            * decl.cc (make_typename_type): Document base-specifier as
            another type-only lookup case.
            * parser.cc (cp_parser_class_name): Propagate tag_type to
            make_typename_type instead of hardcoding typename_type.
            (cp_parser_base_specifier): Pass class_type instead of
            typename_type as tag_type to cp_parser_class_name.

    gcc/testsuite/ChangeLog:

            * g++.dg/template/dependent-base6.C: New test.

    Reviewed-by: Jason Merrill <jason@redhat.com>
    (cherry picked from commit 49ddf362f0a7c1fdeb62f13a852a2fdec9d6fe6d)


More information about the Gcc-bugs mailing list