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?