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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>:

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

commit r14-2810-gb8218eb2266811991b8163f36d5c1d974cb50b93
Author: Patrick Palka <ppa...@redhat.com>
Date:   Wed Jul 26 17:21:43 2023 -0400

    c++: passing partially inst ttp as ttp [PR110566]

    The previous fix doesn't work for partially instantiated ttps mainly
    because most_general_template is a no-op for them.  This patch fixes
    this by giving such ttps a DECL_TEMPLATE_INFO (extending the
    r11-734-g2fb595f8348e16 fix) with which most_general_template can obtain
    the original, unlowered ttp.

    This patch additionally makes coerce_template_template_parms use the
    correct amount of levels from the scope of a ttp argument.

            PR c++/110566
            PR c++/108179

    gcc/cp/ChangeLog:

            * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
            on the DECL_TEMPLATE_RESULT of the new ttp.
            (add_defaults_to_ttp): Make a copy of the original ttp's
            DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
            as well.
            (coerce_template_template_parms): Make sure 'scope_args' has
            the right amount of levels for the ttp argument.
            (most_general_template): Handle template template parameters.
            (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
            DECL_TEMPLATE_RESULT of the new ttp.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp1z/class-deduction115.C: New test.
            * g++.dg/template/ttp39.C: New test.

Reply via email to