From: Lars Gullik Bjønnes (larsbj_at_[hidden])
Date: 2006-09-24 17:08:20
"John Maddock" <john_at_[hidden]> writes:
| Strangely this is one case where C99 appears to be quite specific, section
| 18.104.22.168 p2 says:
| "The macro INTN_C(value) shall expand to a signed integer constant with the
| specified value and type int_leastN_t. The macro UINTN_C(value) shall expand
| to an unsigned integer constant with the specified value and type
| Except, I note that the discusssion you site rejects this argument :-(
Yes, this is the wording in the ChangeLog for the change in glibc:
* sysdeps/generic/stdint.h (UINT8_C, UINT16_C): Don't append 'U',
since C99 requires the result to promote to 'int' when
and uint_least16_t promote to 'int'.
| Then there's TR1, which is rather under-specified in this area, so double
| To be honest I'm not sure what we should do here: in C++ we really do want
| these types to be unsigned!!!
Is this something that could be run through comp.lang.c++.moderated?
Or is it so that you cannot expect to get a specific type out of
UINT8_C? (meaning that the test really is wrong, and that it is doing
something that is not guaranteed.)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk