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

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

https://gcc.gnu.org/g:2249c6348835c817f43c9fc55eac66e54ac1efeb

commit r14-10450-g2249c6348835c817f43c9fc55eac66e54ac1efeb
Author: Patrick Palka <ppa...@redhat.com>
Date:   Mon Jul 15 18:07:55 2024 -0400

    c++: alias template with dependent attributes [PR115897]

    Here we're prematurely stripping the dependent alias template-id A<T> to
    its defining-type-id T when used as a template argument, which in turn
    causes us to essentially ignore A's vector_size attribute in the outer
    template-id.

    This has always been a problem for class template-ids it seems, and after
    r14-2170 variable template-ids are affected as well.

    This patch marks alias templates that have a dependent attribute as
    complex (as with e.g. constrained alias templates) so that we don't look
    through them prematurely.

            PR c++/115897

    gcc/cp/ChangeLog:

            * pt.cc (complex_alias_template_p): Return true for an alias
            template with attributes.
            (get_underlying_template): Don't look through an alias template
            with attributes.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp0x/alias-decl-77.C: New test.

    Reviewed-by: Jason Merrill <ja...@redhat.com>
    (cherry picked from commit 7954bb4fcb6fa80f6bb840133314885011821188)

Reply via email to