All these various examples make it quite obvious that you can do anything without using ?:. The question is, why would you want to? The construct exists as a programmer's convenience. I also suspect (but am uncertain) that the use of ?: is more effecient in terms of code size and speed.