Copying array with const correctness

Vindex9 tech.vindex at gmail.com
Wed Oct 8 09:28:46 UTC 2025


More accurately:

```d
T[] copyArray(T)(inout(T)[] arr) {
     T[] copy = new T[arr.length];
     static if (is(T == U[], U) && !is(T == immutable(Y)[], Y)) {
         foreach(i, ref v; copy) {
             v = copyArray(arr[i]);
         }
     } else static if (is(T == immutable(W)[], W)) {
         for (size_t i = 0; i < arr.length; i++) {
             copy[i] = arr[i].idup;
         }
     } else {
         for (size_t i = 0; i < arr.length; i++) {
             // it doesn't work with postblit, only with modern 
copy ctor
             T elem = arr[i];
             copy[i] = elem;
         }
     }
     return copy;
}
```


More information about the Digitalmars-d-learn mailing list