I don't think this should be trusted. Make only `_dup` trusted. If I'm not mistaken, all the inference happens in the CTFE block anyways, so that should be fine.

If you give `_dup` two template parameters, to make it `T[] _dup(T, S)(S[])`, then you can also get rid of the `cast(typeof(return))`.