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



--- Comment #5 from loose at astron dot nl 2012-12-13 11:09:43 UTC ---

If this is by design, then the documentation is buggy. Here's a literal quote

form the man page of g++



       -Wconversion

           Warn for implicit conversions that may alter a value. This includes

           conversions between real and integer, like "abs (x)" when "x" is

           "double"; conversions between signed and unsigned, like "unsigned

           ui = -1"; and conversions to smaller types, like "sqrtf (M_PI)". Do

           not warn for explicit casts like "abs ((int) x)" and "ui =

           (unsigned) -1", or if the value is not changed by the conversion

           like in "abs (2.0)".  Warnings about conversions between signed and

           unsigned integers can be disabled by using -Wno-sign-conversion.



           For C++, also warn for confusing overload resolution for user-

           defined conversions; and conversions that will never use a type

           conversion operator: conversions to "void", the same type, a base

           class or a reference to them. Warnings about conversions between

           signed and unsigned integers are disabled by default in C++ unless

           -Wsign-conversion is explicitly enabled.



It explicitly gives the example "unsigned ui = -1" as an example.



Furthermore, older g++ compilers used to give this warning. I tried it with g++

4.1.2 and it properly gives a warning.



I also find it a bit counter-intuitive that gcc *does* warn about it, whereas

g++ does *not*.

Reply via email to