I meant something more like this (although this doesn't QUITE compile, but it's close I think):
static ubyte* [n*2] requires_ptr_twice_as_large_as_input(n : uint)
(
ubyte*[n] input,
ubyte*[n*2] output,
) {
output[0..n] = input[0..n];
output[n..2*n] = input[0..n];
return output;
}
void main()
{
ubyte[10] input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
ubyte[20] output = new ubyte[20];
requires_ptr_twice_as_large_as_input!(10)(&input, &output);
}