On Saturday 26 February 2011 00:51:45 spir wrote: > On 02/26/2011 04:26 AM, Steven Schveighoffer wrote: > > Let me fix that for you: > > > > func(j++, y[j]) > > That should be illegal: a statement used as expression, but keeping it's > effect anyway, and not the least kind of, namely an assignment, meaning a > change of the program state.
Umm. There is no statement used as an expression here. The only statement is a function call. Both j++ and y[j] are expressions. Even the function call is an expression. It's just that if it's followed by a semi-colon, it becomes a statement. Regardless, the best solution is to make the order of evaluation of the function arguments fixed at left-to-right instead of undefined. And as I understand it, Walter intends to make D do that at some point. It's just that he hasn't gotten around to it yet. - Jonathan M Davis