Stewart Gordon wrote:
Andrei Alexandrescu wrote:
<snip>
No, sorry. Usually I strive to be precise, but this time I just wasn't. The plan is to define order of evaluation to be lexical order. Somehow I can't convince Walter that that means assignment too!
<snip>

I still would like to know where you found that plan!

The decision to leave order of evaluation unspecified was a deliberate one at the time, and for good reasons.

One of these reasons was to open the option of evaluating subexpressions in parallel. I'm not sure what the others were, but another optimisation potential that comes to my mind is to minimise the working memory while still allowing expressions to be written in an intuitive order.

Who has decided that these reasons are no longer good, and why?

This has been a source of long discussion in C++ circles, and Walter and I have also discussed the matter several times. Defining order of evaluation has good benefits, and the loss in efficiency has with time been reduced to just a few corner cases that don't seem to justify the cost anymore. Note that operations can still be evaluated in parallel as long as there's no dependencies between them.

Andrei

Reply via email to