On Sat, Apr 16, 2011 at 13:37, simendsjo <simen.end...@pandavre.com> wrote: > I tried using a template mixin to avoid having to type this all over, but I > cannot get it to work.. I think I have something wrong with my alias usage, > but that's just speculating :)
Try this: auto arrayOp(string op, A, B, int N, int n = 0)(A[N] a, B[N] b) { static if (n < N - 1) mixin("return [a[n] " ~ op ~ " b[n]] ~ arrayOp!(op,A,B,N,n+1)(a, b);"); else mixin("return [a[n] " ~ op ~ " b[n]];"); } void main() { int[3] a = [1,2,4]; float[3] b = [1,2,4]; auto c = arrayOp!"+"(a,b); writeln(c); } I had to resort to the N/n kludge, because of A[N] <-> A[] incompatibilities. Note that this could easily be extend to accept any string function (ala std.algorithm) and any number of arrays. Philippe