EzoeRyou/cpp-book — pull request #41 by tzik (2013-10-28 12:06:12+00:00)
Title: allow "throw + void" on cond expr

?: の第二、第三オペランドにthrowとvoidの組み合わせを入れるのは禁止されていないように読めます。
こっちのも意図的でしょうか？

> 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 ]
ref: 5.16: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf