title: Can a bool variable store more than 0x01?
body: <pre><code>#include &lt;iostream&gt;
  #include &lt;bitset&gt;
  
  using namespace std;
  
  int main()
  {
      bool a = 0x03;
      bitset&lt;8&gt; x(a);
      cout&lt;&lt;x&lt;&lt;endl;
  
      a = a&gt;&gt;1;
      bitset&lt;8&gt; y(a);
      cout&lt;&lt;y&lt;&lt;endl; 
  }
  </code></pre>
  
  <p>The result is:</p>
  
  <pre><code>00000001    
  00000000
  </code></pre>
  
  <p>The result is <strong>not</strong>:</p>
  
  <pre><code>00000011
  00000001
  </code></pre>
  
  <p>If I change the type of <code>a</code> from <code>bool</code> to <code>char</code>, the result will be the second one.
  It means that I cannot store more than 0x01 in a <code>bool</code>, all right value greater than 0x01 are treat as 0x01. </p>
  
  <p>All compiler has the behavior?  </p>