title: Do the &= and |= operators for bool short-circuit?
body: <p>When writing code like this in C++:</p>
  
  <pre><code>bool allTrue = true;
  allTrue = allTrue &amp;&amp; check_foo();
  allTrue = allTrue &amp;&amp; check_bar();
  </code></pre>
  
  <p><code>check_bar()</code> will not be evaluated if <code>check_foo()</code> returned <code>false</code>. This is called <a href="http://en.wikipedia.org/wiki/Short-circuit_evaluation" rel="noreferrer">short-circuiting or short-circuit evaluation</a> and is part of the lazy evaluation principle.</p>
  
  <p>Does this work with the compound assignment operator <code>&amp;=</code>?</p>
  
  <pre><code>bool allTrue = true;
  allTrue &amp;= check_foo();
  allTrue &amp;= check_bar(); //what now?
  </code></pre>
  
  <p><em>For logical <code>OR</code> replace all <code>&amp;</code> with <code>|</code> and <code>true</code> with <code>false</code>.</em></p>