On Wednesday, 11 July 2018 at 08:31:30 UTC, Dorian Haglund wrote:
But it fails to compile (with gdc 8.1.0, dmd v2.081)
complaining that
template instance reduce!(f) cannot use local 'f' as parameter
to non-global template reduce(functions...)
Congratulations! You've just run into issue 5710 [1], one of D's
most annoying known bugs.
[1]: https://issues.dlang.org/show_bug.cgi?id=5710
The snippet above compiles with the reduce function from
std.algorithm.
[...]
Why the interface difference between std.algorithm's reduce and
taskPool.reduce ?
std.algorithm.reduce is a free function, so it can accept
delegates as template parameters. taskPool.reduce is a member
function, so it can't.