C++ has references; C does not.
You wouldn't be able to bind [mutable] references from an invocation of the conditional operator if not for the following rule:
[expr.cond/5]
: If the second and third operands are glvalues of the same value category and have the same type, the result is of that type and value category and it is a bit-field if the second or the third operand is a bit-field, or if both are bit-fields.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…