Commit a983abd2 by Paolo Carlini Committed by Paolo Carlini

re PR c++/61683 (decltype-specifier not accepted as mem-initializer-id)

/cp
2015-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61683
	* parser.c (cp_parser_mem_initializer): Allow for decltype-specifier.

/testsuite
2015-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61683
	* g++.dg/cpp0x/decltype-mem-initializer1.C: New.

From-SVN: r224022
parent b4147b63
2015-06-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/61683
* parser.c (cp_parser_mem_initializer): Allow for decltype-specifier.
2015-06-01 Jason Merrill <jason@redhat.com>
PR c++/65942
......
......@@ -12803,11 +12803,12 @@ cp_parser_mem_initializer (cp_parser* parser)
mem-initializer-id:
:: [opt] nested-name-specifier [opt] class-name
decltype-specifier (C++11)
identifier
Returns a TYPE indicating the class to be initializer for the first
production. Returns an IDENTIFIER_NODE indicating the data member
to be initialized for the second production. */
Returns a TYPE indicating the class to be initialized for the first
production (and the second in C++11). Returns an IDENTIFIER_NODE
indicating the data member to be initialized for the last production. */
static tree
cp_parser_mem_initializer_id (cp_parser* parser)
......@@ -12865,14 +12866,18 @@ cp_parser_mem_initializer_id (cp_parser* parser)
/*is_declaration=*/true);
/* Otherwise, we could also be looking for an ordinary identifier. */
cp_parser_parse_tentatively (parser);
/* Try a class-name. */
id = cp_parser_class_name (parser,
/*typename_keyword_p=*/true,
/*template_keyword_p=*/false,
none_type,
/*check_dependency_p=*/true,
/*class_head_p=*/false,
/*is_declaration=*/true);
if (cp_lexer_next_token_is_decltype (parser->lexer))
/* Try a decltype-specifier. */
id = cp_parser_decltype (parser);
else
/* Otherwise, try a class-name. */
id = cp_parser_class_name (parser,
/*typename_keyword_p=*/true,
/*template_keyword_p=*/false,
none_type,
/*check_dependency_p=*/true,
/*class_head_p=*/false,
/*is_declaration=*/true);
/* If we found one, we're done. */
if (cp_parser_parse_definitely (parser))
return id;
......
2015-06-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/61683
* g++.dg/cpp0x/decltype-mem-initializer1.C: New.
2015-06-02 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/48052
......
// PR c++/61683
// { dg-do compile { target c++11 } }
struct A {};
A a;
struct B : A {
B(): decltype(a)() {}
};
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