assignment: left-to-right or right-to-left evaluation?
Georg Wrede
georg.wrede at iki.fi
Mon May 11 09:54:20 PDT 2009
Andrei Alexandrescu wrote:
> Georg Wrede wrote:
>> If the programmer has introduced dependencies on the evaluation order,
>> yes. But if he hasn't, then it will not introduce anything.
>
> If violations could be checked such that invalid code is rejected, your
> solution would work.
>
>> With
>>
>> a[fun] = gun;
>>
>> a rewrite
>>
>> auto f = a[fun];
>> a[f] = gun;
>>
>> makes it explicit how the programmer wants it done. It also removes
>> any uncertainty (and need to remember an arbitrary rule) for other
>> people.
>>
>> If you'd really want things easy for Walter, unambiguous, and clear
>> for the reader, then you'd advocate forbidding expressions in lvalues.
>
> I think that would be too restrictive. a[b] is already an expression.
I guessed you'd say that. But I thought it'd be condescending to explain
that the compiler should notice a leaf expression.
> The solution is simple: define an order of evaluation such that even bad
> code behaves consistently.
Then pick lexical order. For consistency, that's what statement.html has
all over the place anyway.
More information about the Digitalmars-d
mailing list