Size of char
, signed char
and unsigned char
is defined to be 1 byte, by the C++ Standard itself. I'm wondering why it didn't define the sizeof(bool)
also?
C++03 Standard $5.3.3/1 says,
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined. [Note: in particular,sizeof(bool) and sizeof(wchar_t) are implementation-defined.69)
I understand the rationale that sizeof(bool) cannot be less than one byte. But is there any rationale why it should be greater than 1 byte either? I'm not saying that implementations define it to be greater than 1, but the Standard left it to be defined by implementation as if it may be greater than 1.
If there is no reason sizeof(bool)
to be greater than 1, then I don't understand why the Standard didn't define it as just 1 byte
, as it has defined sizeof(char)
, and it's all variants.