[Bug c++/85846] [Concepts] Concept as value in initializer: bogus declared-as-implicit-template error

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Nov 9 14:11:13 GMT 2021


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

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

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

commit r12-5053-ga22d910305a5232694ff48ead37a7f53e46b7202
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Nov 9 09:09:43 2021 -0500

    c++: bogus error w/ tentative type parse of concept-id [PR98394]

    Here when tentatively parsing the if condition as a declaration, we try
    to treat C<1> as the start of a constrained placeholder type, which we
    quickly reject because C doesn't accept a type as its first argument.
    But since we're parsing tentatively, we shouldn't emit an error in this
    case.

    In passing, also fix PR85846 by only overriding 'tentative' to false when
    given a concept-name, and not also when given a concept-id that has an
empty
    argument list.

            PR c++/98394
            PR c++/85846

    gcc/cp/ChangeLog:

            * parser.c (cp_parser_placeholder_type_specifier): Declare
            static.  Don't override tentative to false when tmpl is a
            concept-id with empty argument list.  Don't emit a "does not
            constrain a type" error when tentative.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-pr98394.C: New test.
            * g++.dg/cpp2a/concepts-pr85846.C: New test.


More information about the Gcc-bugs mailing list