Jarrett Billingsley: > Wrong types. Right, I am sorry, thank you for spotting it. There's the moderate need for a different kind of cast, for collections (arrays). At the moment you can do:
import d.func: map, putr, array, xcast; import std.conv: toInt; import d.templates: ArrayType1; void some_function(int[] x) { putr(typeid(typeof(x)), " ", x); } void main() { short[] x = [cast(short)10_000, 5_000, 100, 6_000, 50, 950]; some_function(map((ArrayType1!(typeof(x)) s){return cast(int)s;}, x[0 .. 4])); // or less DRY: some_function(map((short s){return cast(int)s;}, x[0 .. 4])); // better: some_function(array(xcast!(int)(x[0 .. 4]))); } The last version with array and xcast may be acceptable. The advantage of using it is that the ranges 0..4 can be variables. Built-in types aren't constructors-functions, so you can't do something like this: some_function(map(&int, x[0 .. 4])); Bye, bearophile