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:
parent
201fe4c608
commit
ca982b1c62
@ -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
|
||||
|
@ -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. */
|
||||
|
9
gcc/testsuite/g++.dg/init/explicit1.C
Normal file
9
gcc/testsuite/g++.dg/init/explicit1.C
Normal file
@ -0,0 +1,9 @@
|
||||
// PR c++/60417
|
||||
|
||||
struct A { explicit A(int = 0); };
|
||||
struct B { A a; };
|
||||
|
||||
int main()
|
||||
{
|
||||
B b = {};
|
||||
}
|
Loading…
Reference in New Issue
Block a user