title: Engineered bool compares equal to both true and false, why?
body: <p>The example bellows compiles, but the output is rather strange :</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;cstring&gt;
  
  struct A
  {
      int a;
      char b;
      bool c;
  };
  
  int main()
  {
      A v;
      std::memset( &amp;v, 0xff, sizeof(v) );
  
      std::cout &lt;&lt; std::boolalpha &lt;&lt; ( true == v.c ) &lt;&lt; std::endl;
      std::cout &lt;&lt; std::boolalpha &lt;&lt; ( false == v.c ) &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p>the output is :</p>
  
  <pre><code>true
  true
  </code></pre>
  
  <p>Can someone explains why?</p>
  
  <p>If it matters, I am using g++ 4.3.0</p>