a)
isn't this almost, if not exactly, the same as
std.algorithm.reduce?
b)
you can write nice things like this:
auto min = [2,4,1,3,5].aggregate!((a, b) => a < b ? a :
b)(int.max);
c)
the deduction failure looks like a bug to me, perhaps there is
a good reason why it can't work in the general case.
a) Had a look at std.algorithm.reduce, looks like this is what I
did, but there are 2 overloads inside a template block instead of
parameter with a default value (also less strictly typed):
template reduce(fun...) {
auto reduce(R)(R r)
auto reduce(S, R)(S seed, R r)
}
The code there though is mindboggling :)
b) Thanks, forgot about that