Disable auto_is_implicit_function_template_parm_p while parsing attributes
authorAlexandre Oliva <aoliva@redhat.com>
Fri, 23 Mar 2018 01:18:48 +0000 (01:18 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Fri, 23 Mar 2018 01:18:48 +0000 (01:18 +0000)
commit91f9108f1bd90c307daadfb4876258ec57cb746b
treefff8b26767172444ca89fa6022588042e5fe90f4
parentc95bcbe3c10bff29c8a6f2b53a192f0ad2d22740
Disable auto_is_implicit_function_template_parm_p while parsing attributes

We don't want functions to become implicit templates just because of
random uses of auto in unexpected places.  Disabling the special
handling of auto while parsing attributes, for example, makes for
more sensible errors.

for  gcc/cp/ChangeLog

PR c++/84610
PR c++/84642
PR c++/84942
* cp-tree.h (temp_override): New template class, generalizing
a cleanup that was only used...
* parser.c (cp_parser_parameter_declaration_clause):
... here for auto_is_implicit_function_template_parm_p.
(cp_parser_gnu_attributes_opt): Use it here as well.
(cp_parser_std_attribute): Likewise.

From-SVN: r258790
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/parser.c