Timon Gehr wrote: > void removeAt(T)(ref T[] arr, size_t index) > { > foreach (i, ref item; retro(arr[1 .. index+1])) > item = arr[i - 1]; > arr = arr[1 .. $]; > } Sorry, still wrong: void removeAt(T)(ref T[] arr, size_t index) { foreach (i, ref item; retro(arr[1 .. index+1])) item = arr[index - i - 1]; arr = arr[1 .. $]; }