This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] Clarify interaction of -Wnarrowing with -std
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Jason Merrill <jason at redhat dot com>, Gerald Pfeifer <gerald at pfeifer dot com>, Sandra Loosemore <sandra at codesourcery dot com>, Joseph Myers <joseph at codesourcery dot com>
- Date: Fri, 19 Feb 2016 12:42:35 +0000
- Subject: [patch] Clarify interaction of -Wnarrowing with -std
- Authentication-results: sourceware.org; auth=none
In PR69864 Manu suggests improving the docs to explain that
-Wnarrowing sometimes produces errors not warnings.
I think the right way to do that is clarify how it interacts with
-std. Specifically that the effect of -Wnarrowing listed first in the
manual *only* applies to C++98 modes, For all later modes (not just
with -std=c++11 as it says now), narrowing conversions produce errors
or warnings by default.
OK for trunk?
commit b78b2728d8d946bd92843f6155cdd2415682da09
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Fri Feb 19 12:14:33 2016 +0000
* doc/invoke.texi (C++ Dialect Options): Clarify interaction of
-Wnarrowing with -std.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 2bd793d..c1ab788 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2756,7 +2756,8 @@ Requires @option{-flto} to be enabled. Enabled by default.
@item -Wnarrowing @r{(C++ and Objective-C++ only)}
@opindex Wnarrowing
@opindex Wno-narrowing
-Warn when a narrowing conversion prohibited by C++11 occurs within
+With @option{-std=gnu++98} or @option{-std=c++98}, warn when a narrowing
+conversion prohibited by C++11 occurs within
@samp{@{ @}}, e.g.
@smallexample
@@ -2765,10 +2766,13 @@ int i = @{ 2.2 @}; // error: narrowing from double to int
This flag is included in @option{-Wall} and @option{-Wc++11-compat}.
-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.
+When a later standard is in effect, e.g. when using @option{-std=c++11},
+narrowing conversions are diagnosed by default, as required by the standard.
+A narrowing conversion from a constant produces an error,
+and a narrowing conversion from a non-constant produces a warning,
+but @option{-Wno-narrowing} suppresses the diagnostic.
+Note that this does not affect the meaning of well-formed code;
+narrowing conversions are still considered ill-formed in SFINAE contexts.
@item -Wnoexcept @r{(C++ and Objective-C++ only)}
@opindex Wnoexcept