On Thursday, 4 September 2014 at 20:45:41 UTC, Ary Borenszweig
wrote:
That's because the middle expression in the comparison is first
assigned to a temporary variable, so `foo` is only invoked
once. This makes both the code more readable, efficient and
saves the programmer from having to save that value to a
temporary variable itself.
I guess D doesn't have it because it has (...why?) to be
compatible with C's semantic. Also, as you can see, it's not
that trivial to implement because you need to assign that value
first to a temporary variable.
D can also, in this case, do (or will do) common sub-expression
elimination because it has a strict memory model (const and
immutability) and function purity (template inference).