title: Why the sizeof(bool) is not defined to be one, by the Standard itself?
body: <p>Size of <code>char</code>, <code>signed char</code> and <code>unsigned char</code> is defined to be 1 byte, by the C++ Standard itself. I'm wondering why it didn't define the <code>sizeof(bool)</code> also?</p>
  
  <p>C++03 Standard $5.3.3/1 says,</p>
  
  <blockquote>
    <p>sizeof(char), sizeof(signed char) and
    sizeof(unsigned char) are 1; the
    result of sizeof applied to <strong>any other</strong>
    fundamental type (3.9.1) is
    implementation-defined. [Note: <strong>in
    particular,sizeof(bool) and
    sizeof(wchar_t) are
    implementation-defined</strong>.69)</p>
  </blockquote>
  
  <p>I understand the rationale that <a href="https://stackoverflow.com/questions/4626815/why-is-a-boolean-1-byte-and-not-1-bit-of-size/4626993#4626993">sizeof(bool) cannot be less than one byte</a>. 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 <strong>as if it may be greater than 1.</strong> </p>
  
  <p>If there is no reason <code>sizeof(bool)</code> to be greater than 1, then I don't understand why the Standard didn't define it as just <code>1 byte</code>, as it has defined <code>sizeof(char)</code>, and it's all variants.</p>