diff options
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 630faac..2d9ccba 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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++; |