In reply to manjush_pv:
The behavior of the ternary operator was an attempt to be more realistic in the propagation of unknowns during simulation.
With the ternary operator, it is easy to define its evaluation behavior since the true and false branches must produce a result with the same type. An if/else statement is more general; the code in the true and false branches do not even have to be related to each other. The branches could event have different blocking delays.