import std.stdio; int[3] fun(int[3] x, int[3] y) { // x и y – ко­пии пе­ре­дан­ных ар­гу­мен­тов x[0] = y[0] = 100; return x; } double[3] fun2(double[] x) { double[3] result; result[] = 2 * x[]; // Опе­ра­ция над мас­си­вом в це­лом return result; } void main() { int[3] a = [1, 2, 3]; int[3] b = a; a[1] = 42; assert(b[1] == 2); // b – не­за­ви­си­мая ко­пия a auto c = fun(a, b); // c име­ет тип int[3] assert(c == [100, 42, 3]); writeln(c); assert(b == [1, 2, 3]); // Вы­зов fun ни­как на от­ра­зил­ся на b writeln(b); double[3] point = [0, 0, 0]; double[] test = point; // Все в по­ряд­ке auto r = fun2(point); // Все в по­ряд­ке, те­перь r име­ет тип double[3] }