simendsjo: > I couldn't find any info on the comma expression in the language > reference, but this was my first google hit: > """ > A comma expression contains two operands of any type separated by a > comma and has *left-to-right* associativity. The left operand is fully > evaluated, possibly producing side effects, and its value, if there is > one, is *discarded*. The right operand is then evaluated. The type and > value of the result of a comma expression are those of its right > operand, after the usual unary conversions > """
Right. But my code was wrong, I meant to write this: void main() { int i; int[2] x; i = x[i] = 1; assert(x == [1, 0]); // OK int j; int[2] y; y[j] = j = 1; assert(y == [0, 1]); // Not OK } And I think it is working as you expect it to. Thank you and sorry for the noise, bearophile