https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95174
--- Comment #3 from Iain Buclaw <ibuclaw at gdcproject dot org> --- (In reply to Witold Baryluk from comment #2) > Doh. Of course. My bad. Sorry. > > > static arrays are value type, dynamic arrays are reference type. > Dynamic arrays are still value types, the value passed around is a pointer and length. For example: void f(immutable(float[64]) x, float[] o) { o[] = x[] * 2.0f; } float[64] x = 1.0f; float[] o; f(x, o); // o does not change here. assert(o.length == 0); assert(o.ptr is null);