On Sun, 09 Jan 2011 23:09:26 -0600, Christopher Nicholson-Sauls wrote: > On 01/09/11 16:28, Sean Eskapp wrote: >> This code works fine: >> >> int[] arr = [ 1, 2, 3, 4, 5 ]; >> auto myMax = function int(int a, int b) { return (a > b) ? a : b; }; >> auto biggest = reduce!(myMax)(arr); >> >> But passing the function literal directly to reduce causes an error. Is >> this intentional? > > I believe this is because binaryFun (which reduce uses) takes a template > alias parameter, which must refer to something bound -- aka, having a > name.
Template alias parameters do accept anonymous functions now (but I don't think it's that long ago that they didn't). This works in DMD 2.051, at least: auto biggest = reduce!((a, b) { return a > b ? a : b; })(arr); -Lars