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.

Reply via email to