===================================================================
@@ -957,9 +957,13 @@ check_narrowing (tree type, tree init, tsubst_flag
}
}
else if (complain & tf_error)
- error_at (EXPR_LOC_OR_LOC (init, input_location),
- "narrowing conversion of %qE from %qT to %qT inside { }",
- init, ftype, type);
+ {
+ global_dc->pedantic_errors = 1;
+ pedwarn (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
+ "narrowing conversion of %qE from %qT to %qT inside { }",
+ init, ftype, type);
+ global_dc->pedantic_errors = flag_pedantic_errors;
+ }
}
return cxx_dialect == cxx98 || ok;
===================================================================
@@ -2706,10 +2706,10 @@ int i = @{ 2.2 @}; // error: narrowing from double
This flag is included in @option{-Wall} and @option{-Wc++11-compat}.
-With @option{-std=c++11}, @option{-Wno-narrowing} suppresses for
-non-constants the diagnostic required by the standard. Note that this
-does not affect the meaning of well-formed code; narrowing conversions
-are still considered ill-formed in SFINAE context.
+With @option{-std=c++11}, @option{-Wno-narrowing} suppresses the diagnostic
+required by the standard. Note that this does not affect the meaning
+of well-formed code; narrowing conversions are still considered
+ill-formed in SFINAE context.
@item -Wnoexcept @r{(C++ and Objective-C++ only)}
@opindex Wnoexcept
===================================================================
@@ -0,0 +1,5 @@
+// PR c++/65801
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wno-narrowing" }
+
+static struct zai { unsigned int x; } x = {-1};