Reading the book from Alexandrescu we can find this (page 103-104, at least in my edition):
Expanding arrays has a couple of subtleties that concern possible reallocation of the array. Consider: auto a = [87, 40, 10, 2]; auto b = a; // Now a and b refer to the same chunk a ~= [5, 17]; // Append to a a[0] = 15; // Modify a[0] assert(b[0] == 15); // Pass or fail? it seems natural that the test is ok but it is not... if we read more we find: "D leaves~= the freedom of either expanding by reallocation or opportunistically expanding in place if there is enough unused memory at the end of the current array." At a first glance this seems to be a serious issue... it seems hard to accept that b can lost its connection to "a" in a silent mode due to a reallocation Is there a safe mode to do this for large arrays?