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
| 7.18.4.1 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
        uint_least8_t
        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.)

-- 
	Lgb

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk