Если T
является скалярным типом, а N = CHAR_BIT * sizeof(T)
гарантируется ли существование uintN_t
? Если нет, верно ли это в большинстве случаев, но с несколькими исключительными типами случаев? ( long double
и указатели функций-членов приходят на ум. )
Для справки:
intN_t
,uintN_t
- N1548 §7.20.1.1 ¶3: "These types are optional. However, if an implementation provides integer types with widths of 8, 16, 32, or 64 bits, no padding bits, and (for the signed types) that have a two’s complement representation, it shall define the corresponding typedef names."
scalar types
- N3242 §3.9 ¶9: "Arithmetic types, enumeration types, pointer types, pointer to member types, std::nullptr_t, and cv-qualified versions of these types are collectively called scalar types."
inttypes.h
(C99) иcinttypes
(эквивалент C++), которые содержат аналогичные определения, но эти стандарты гарантируют только до uint64_t. И что означает большинство случаев? 64 = 2 ^ 6, а в 32-битной системе, я думаю, теоретически у вас может быть целое число размера 2 ^ 32, поэтому НЕТ, в большинстве случаев это неверно. - person Apprentice Queue   schedule 25.11.2013uint1024_t
. Я бы разместил всю реализацию прямо здесь, но она не помещается в этом поле комментария... - person peppe   schedule 25.11.2013