Boost logo

Boost :

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
| 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
| uint_leastN_t."
| 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, gregod at, cpdaniel at, john at