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.

Reply via email to