static class Adder : Function!(int, int) { int added; this (int added) { this.added = added; } override int opCall(int x) { return x + added; } } import std.range : iota; import std.array : array; Function!(int, int)[] adders; foreach_reverse (i; 0..5) adders ~= new Adder(i + 1); assert (adders.arrayArray()(5.iota.array) == [5, 5, 5, 5, 5]);
Take an array of functions and return a function from and to array.