re PR c++/60417 ([DR 1518] Bogus error on C++03 aggregate initialization)

PR c++/60417
	* typeck2.c (process_init_constructor_record): Set
	CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.

From-SVN: r208333
This commit is contained in:
Jason Merrill 2014-03-04 17:16:12 -05:00 committed by Jason Merrill
parent 201fe4c608
commit ca982b1c62
3 changed files with 16 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2014-03-04 Jason Merrill <jason@redhat.com>
PR c++/60417
* typeck2.c (process_init_constructor_record): Set
CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
PR c++/60415
PR c++/54359
* parser.c (cp_parser_direct_declarator): Set declarator to

View File

@ -1312,6 +1312,9 @@ process_init_constructor_record (tree type, tree init,
for us, so build up TARGET_EXPRs. If the type in question is
a class, just build one up; if it's an array, recurse. */
next = build_constructor (init_list_type_node, NULL);
/* Call this direct-initialization pending DR 1518 resolution so
that explicit default ctors don't break valid C++03 code. */
CONSTRUCTOR_IS_DIRECT_INIT (next) = true;
next = massage_init_elt (TREE_TYPE (field), next, complain);
/* Warn when some struct elements are implicitly initialized. */

View File

@ -0,0 +1,9 @@
// PR c++/60417
struct A { explicit A(int = 0); };
struct B { A a; };
int main()
{
B b = {};
}