I'd say import std.algorithm; auto cross(R1,R2)(R1 a, R2 b) { return cartesianProduct(a,b).map!"[a[0]]~[a[1]]"(); } You can always: import std.array; auto strings = array(cross("ab","12")); Although that won't give you a string[], but in a dchar[][].