decl.c (reshape_init_r): { T } is not an aggregate initializer for class T.
* decl.c (reshape_init_r): { T } is not an aggregate initializer for class T. From-SVN: r149874
This commit is contained in:
parent
bd1f11bec9
commit
40b125d799
@ -5,6 +5,9 @@
|
||||
(initialize_reference): Binding temporary to non-const && is fine.
|
||||
* decl.c (grok_reference_init): Remove error for CONSTRUCTOR.
|
||||
|
||||
* decl.c (reshape_init_r): { T } is not an aggregate initializer
|
||||
for class T.
|
||||
|
||||
2009-07-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR c/40401
|
||||
|
@ -4878,7 +4878,7 @@ reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p)
|
||||
a CONSTRUCTOR). TYPE is the type of the variable being initialized, D is the
|
||||
iterator within the CONSTRUCTOR which points to the initializer to process.
|
||||
FIRST_INITIALIZER_P is true if this is the first initializer of the
|
||||
CONSTRUCTOR node. */
|
||||
outermost CONSTRUCTOR node. */
|
||||
|
||||
static tree
|
||||
reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
|
||||
@ -4923,6 +4923,10 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
|
||||
initializer is considered for the initialization of the first
|
||||
member of the subaggregate. */
|
||||
if (TREE_CODE (init) != CONSTRUCTOR
|
||||
/* But don't try this for the first initializer, since that would be
|
||||
looking through the outermost braces; A a2 = { a1 }; is not a
|
||||
valid aggregate initialization. */
|
||||
&& !first_initializer_p
|
||||
&& can_convert_arg (type, TREE_TYPE (init), init, LOOKUP_NORMAL))
|
||||
{
|
||||
d->cur++;
|
||||
|
@ -1,3 +1,7 @@
|
||||
2009-07-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/init/aggr4.C: New.
|
||||
|
||||
2009-07-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
Core issue 934
|
||||
|
7
gcc/testsuite/g++.dg/init/aggr4.C
Normal file
7
gcc/testsuite/g++.dg/init/aggr4.C
Normal file
@ -0,0 +1,7 @@
|
||||
struct A
|
||||
{
|
||||
int i;
|
||||
};
|
||||
|
||||
A a1 = { 1 }; // ok
|
||||
A a2 = { a1 }; // { dg-error "cannot convert" }
|
Loading…
Reference in New Issue
Block a user