On Monday, 21 October 2013 at 10:31:51 UTC, Krzysztof Ciebiera
wrote:
Is the following compiler behavior consistent with language
specification?
import std.stdio;
void main()
{
int a[][] = [[1,2,3]];
foreach(x; a)
{
x[0] = 0;
x ~= 4;
}
writeln(a);
}
I understand why thw program could output [1,2,3] (like in C++
without &) or [0,2,3,4] (python, C++ ref). But [0,2,3]? It was
unpleasant surprise.
The behavior of D's slices is often unintuitive. To understand
them, read this article: http://dlang.org/d-array-article.html