throw-expressions in ternary operator
<p>According to ISO/IEC 14882:2011, we can't use throw-expressions both in second and third operands of ternary operator:</p>

<blockquote>
  <p>5.16 Conditional operator [expr.cond]</p>
  
  <p>2 If either the second or the third operand has type void, then the
  lvalue-to-rvalue (4.1), array-to-pointer (4.2), and
  function-to-pointer (4.3) standard conversions are performed on the
  second and third operands, and one of the following shall hold: — The
  second or the third operand (but not both) is a throw-expression
  (15.1); the result is of the type of the other and is a prvalue. —
  Both the second and the third operands have type void; the result is
  of type void and is a prvalue. [ Note: This includes the case where
  both operands are throw-expressions. —end note ]</p>
</blockquote>

<p>Why both Comeau compiler and gcc allows this code?</p>

<pre><code>int main()
{
   true ? throw 0 : throw 1;
}
</code></pre>
