Размер char
, signed char
и unsigned char
определяется как 1 байт, по самому стандарту С++. Мне интересно, почему он также не определил sizeof(bool)
?
С++ 03 Стандарт $5.3.3/1 говорит,
sizeof (char), sizeof (подпись char) и sizeof (без знака char) - 1; результат sizeof применяется к любому другомуфундаментальный тип (3.9.1) реализации. [Примечание: в в частности, sizeof (bool) и sizeof (wchar_t) являются определяется реализацией 0,69)
Я понимаю, что sizeof (bool) не может быть меньше одного байта. Но есть ли какое-либо обоснование, почему оно должно быть больше 1 байта? Я не говорю, что реализации определяют, что оно больше 1, но стандарт оставил его определяемым реализацией , как если бы он был больше 1.
Если нет причины sizeof(bool)
быть больше 1, то я не понимаю, почему стандарт не определил ее как просто 1 byte
, так как она определила sizeof(char)
, и все варианты.