On 10/24/2011 04:10 AM, Gabriel Dos Reis wrote:
Before the patch, -std=c++0x effectively put off -Wc++0x-compat
because we are compiling c++98/c++03 code, so we can only *warn* about
possible compatibility conflict with C++11. However, the narrowing
diagnostic required by C++11 is NOT a warning. It is a diagnostic. The
way we alter a standard mandate is through some -fflag, e.g.
-fpermissive. What the above patch fragment is doing is to turn on a
*warning*. When -std=c++0x is in effect, narrowing is no longer a
warning. It is an error by default.
I'm missing your point, I'm sorry: I maintain that *before* and after
the patch -Wno-narrowing in C++0x mode was able to suppress the
narrowing warnings. I'm 100% sure, I double checked for you one second
ago. Are we on the same page on this? If we are, and you think gcc
should do something new, I have no problem changing my patch to, eg:
if (cxx_dialect == cxx0x)
{
/* If we're allowing C++0x constructs, don't warn about C++98
identifiers which are keywords in C++0x. */
warn_cxx0x_compat = 0;
warn_narrowing = 1;
}
else if (warn_narrowing == -1)
warn_narrowing = 0;
Paolo.