mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 03:50:26 +08:00
re PR c++/36943 ([c++0x] Use of nested C++0x initializer list for non-aggregate rejected)
PR c++/36943 * decl.c (reshape_init_r): Allow C++0x initializer lists. From-SVN: r138221
This commit is contained in:
parent
08df5d3e97
commit
b71836b0e4
@ -1,3 +1,8 @@
|
||||
2008-07-27 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/36943
|
||||
* decl.c (reshape_init_r): Allow C++0x initializer lists.
|
||||
|
||||
2008-07-28 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Merge from gimple-tuples-branch.
|
||||
|
@ -4786,15 +4786,20 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
|
||||
if (!CP_AGGREGATE_TYPE_P (type))
|
||||
{
|
||||
/* It is invalid to initialize a non-aggregate type with a
|
||||
brace-enclosed initializer.
|
||||
brace-enclosed initializer before C++0x.
|
||||
We need to check for BRACE_ENCLOSED_INITIALIZER_P here because
|
||||
of g++.old-deja/g++.mike/p7626.C: a pointer-to-member constant is
|
||||
a CONSTRUCTOR (with a record type). */
|
||||
if (TREE_CODE (init) == CONSTRUCTOR
|
||||
&& BRACE_ENCLOSED_INITIALIZER_P (init)) /* p7626.C */
|
||||
{
|
||||
error ("braces around scalar initializer for type %qT", type);
|
||||
init = error_mark_node;
|
||||
if (SCALAR_TYPE_P (type))
|
||||
{
|
||||
error ("braces around scalar initializer for type %qT", type);
|
||||
init = error_mark_node;
|
||||
}
|
||||
else
|
||||
maybe_warn_cpp0x ("extended initializer lists");
|
||||
}
|
||||
|
||||
d->cur++;
|
||||
|
@ -56,6 +56,9 @@ void i(initializer_list<int> l)
|
||||
if (p != l.end()) abort();
|
||||
}
|
||||
|
||||
struct U { U(int, int) {} };
|
||||
U ua[] = { { 3, 2 } };
|
||||
|
||||
int main()
|
||||
{
|
||||
g({1,2,3});
|
||||
|
Loading…
x
Reference in New Issue
Block a user