title: Minimum sizes for integral types
body: <p>Suppose I want to write a <em>minimum standard compiler</em> and I've reached the point where I need to implement the integral types. Am I correct in assuming that I can minimise the sizes of the integral types according to this table?</p>
  
  <p><code>char</code>: standard mandates <code>sizeof(char)</code> is always 1. Therefore 1 byte.</p>
  
  <p><code>short</code>: must be at least 2 bytes in. Therefore 2 bytes.</p>
  
  <p><code>int</code>: must be no smaller than <code>short</code>. Therefore 2 bytes.</p>
  
  <p><code>long</code>: must be no smaller than <code>int</code>. Therefore 2 bytes.</p>
  
  <p><code>long long</code>: must be longer than <code>long</code>. Therefore 17 bits (i.e. -65536 to +65535) if I implement twos compliment: I <em>think</em> that's a choice I can make).</p>
  
  <p><code>bool</code>: standard doesn't specify the size. Therefore 1 bit.</p>
  
  <p>I'm aware I don't need to support <code>std::int64_t</code> and its unsigned cousin. Do I need to support <code>std::int32_t</code> or is that compiler discretion?</p>