title: C++ conditional operator with void operand(s)
body: <p>I’m trying to understand the following excerpt from the C++ standard (ISO/IEC 14882:2003, newer versions say essentially the same):</p>
  
  <blockquote>
    <p>5.16 Conditional operator</p>
    
    <p>2 If either the second or the third operand has type (possibly cv-qualified) 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, ...</p>
  </blockquote>
  
  <p>I am inclined to thinking that in this context, when an operand is a function call, then the type of the operand is taken to be (although it is not) the function return type. If that is so, then that yields an example of a void type.</p>
  
  <p>I also imagine that a throw expression could also be surmised to have type void in this context, independently of the type of the throw operand. That would then be another example.</p>
  
  <p>Are my two assumptions right? Are there any other cases?<br>
  Many thanks</p>