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

--- Comment #3 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:8913b2c2bcded39427ff27e6dfc276ae8555f6b8

commit r11-8155-g8913b2c2bcded39427ff27e6dfc276ae8555f6b8
Author: Patrick Palka <ppa...@redhat.com>
Date:   Tue Apr 13 12:35:33 2021 -0400

    c++: Reject alias CTAD in C++17 [PR99008]

    Here, in C++17 mode, we only pedwarn about the use of alias CTAD and
    then later ICE from alias_ctad_tweaks when attempting to constrain
    the guides.  Since the construction of the guides of an alias template
    effectively relies on concepts, we shouldn't be permissive about alias
    CTAD in C++17 mode, so this patch turns the pertinent pedwarn in
    do_class_deduction into an error.

    In order to get a consistent diagnostic for B() vs the other forms in
    the added testcase, I had to remove the special handling of CTAD with
    empty initializer in build_functional_cast_1 so that we always pass
    'complain' to do_auto_deduction.

    gcc/cp/ChangeLog:

            PR c++/99008
            * pt.c (do_class_deduction): Reject alias CTAD in C++17 mode
            rather than issuing a pedwarn.
            * typeck2.c (build_functional_cast_1): Handle CTAD uniformly
            for consistent diagnostics.

    gcc/testsuite/ChangeLog:

            PR c++/99008
            * g++.dg/parse/template2.C: Adjust expected diagnostic.
            * g++.dg/template/error8.C: Likewise.
            * g++.dg/cpp1z/class-deduction84.C: New test.

Reply via email to