
It is wrong for C++0x, which specifically mentions that the macros are NOT to be used in <cstdint>. ยง18.4.1
That's not how I read 18.4.1. Quoting from n3092 (the most recent draft I happen to have handy), 18.4.1/2 says The header defines all functions, types, and macros the same as 7.18 in the C standard. [Note: The macros defined by <cstdint> are provided unconditionally. In particular, the symbols __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS (mentioned in footnotes 219, 220, and 222 in the C standard) play no role in C++. -- end note] I read that as saying that macros such as WCHAR_MAX are always defined by <cstdint>, irrespective of any definitions (or lack thereof) for __STDC_LIMIT_MACROS. ~~~~~ That would be my reading too - note that C++03 lists these as required in table 95 - they're not new C++0x features. None of which resolves the original question of course... John.