http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50011

           Summary: [C++0x] warning: narrowing conversion of 'i' from
                    'short unsigned int' to 'int' inside { } [-Wnarrowing]
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: zso...@seznam.cz
                CC: ja...@gcc.gnu.org


Since fixing PR49577, gcc gives a warning for the following code:

void foo(short unsigned i)
{
  int a[] = {i};
}

$ g++ -std=gnu++0x tst.C
tst.C: In function 'int foo(short unsigned int)':
tst.C:3:14: warning: narrowing conversion of 'i' from 'short unsigned int' to
'int' inside { } [-Wnarrowing]

8.5.4/6 says:
A narrowing conversion is an implicit conversion
...
— from an integer type or unscoped enumeration type to an integer type that
cannot represent all the values of the original type
...

In this case, 'int' can represent all the values of 'short unsigned int', so
unless I am missing something, this should be valid.

Reply via email to