The following code was written for Rosetta Code and is intended to find all factors of an integer. It produces wrong results. The exact wrong results depend on whether inlining is enabled.
import std.range, std.algorithm, std.stdio;
auto factors(I)(I num) {
return filter!((i) { return num % i == 0; })(
iota(1, num + 1)
);
}
void main() {
writeln(factors(36));
}
If I change the line with the lambda from a template literal to a delegate literal:
return filter!((I i) { return num % i == 0; })
then it works.