GCC 3.3.1, new warnings with <limits>
M. Warner Losh
imp at bsdimp.com
Sun Jul 13 11:24:44 PDT 2003
: > 134 #define __glibcpp_signed(T) ((T)(-1) < 0)
: #define __glibcpp_signed(T) (!((T)(-1) > 0))
Why not the simpler:
#define __glibcpp_signed(T) ((T)(-1) <= 0)
that way we have an overlap on the range of the two types, so we won't
get a warning. We know for a fact that -1 != 0 for all known machine
types (all machines are two's complement, or are required to behave as
if they are two's complement, per the standard).
(unsigned int) -1 == 0xffffffff (assuming 32-bit int).
even on a one's complement's machine, without the standard conversion,
the 'type punning' conversion of -1 would yield 0xfffffffe, which is
still > 0.
More information about the freebsd-current