Commit 75e9d9a0 by Adam Butcher Committed by Adam Butcher

re PR c++/60064 ([c++1y] ICE with auto as parameter of friend function)

Fix PR c++/60064.

    PR c++/60064
    * parser.c (cp_parser_member_declaration): Pop fully implicit template
    scope for generic friend declarations as well as for non-friends.

    PR c++/60064
    * g++.dg/cpp1y/pr60064.C: New testcase.

From-SVN: r207856
parent 4ea4bf9c
......@@ -5,6 +5,10 @@
scope whenever a template parameter list has been started, independent
of whether the function call operator was well-formed or not.
PR c++/60064
* parser.c (cp_parser_member_declaration): Pop fully implicit template
scope for generic friend declarations as well as for non-friends.
2014-02-12 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60047
......
......@@ -20406,13 +20406,11 @@ cp_parser_member_declaration (cp_parser* parser)
&decl_specifiers,
declarator,
attributes);
if (parser->fully_implicit_function_template_p)
decl = finish_fully_implicit_template (parser, decl);
/* If the member was not a friend, declare it here. */
if (!friend_p)
{
if (parser->fully_implicit_function_template_p)
decl = finish_fully_implicit_template (parser, decl);
finish_member_declaration (decl);
}
finish_member_declaration (decl);
/* Peek at the next token. */
token = cp_lexer_peek_token (parser->lexer);
/* If the next token is a semicolon, consume it. */
......
......@@ -9,6 +9,9 @@
PR c++/60190
* g++.dg/cpp1y/pr60190.C: New testcase.
PR c++/60064
* g++.dg/cpp1y/pr60064.C: New testcase.
2014-02-18 Uros Bizjak <ubizjak@gmail.com>
PR target/60205
......
// PR c++/60064
// { dg-do compile }
// { dg-options "-std=c++1y" }
class A
{
int m;
friend void foo (auto) {}
friend void foo2 (auto);
};
void foo2 (auto i)
{
A a;
a.m = i;
}
int main ()
{
foo2 (7);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment