Ranges and Algorithms -- Templates, Delegates, or Ranges?

%u wfunction at hotmail.com
Tue Feb 22 10:11:32 PST 2011


> Indeed. The solution to OP's problem is std.algorithm.map. Local
instantiation should take care of aliases that refer to local
symbols, so OP's original complaint about std.algorithm.map is
invalid (albeit for a subtle reason). The following code compiles as
expected:
import std.algorithm, std.stdio;
auto fun(int[] a)
{
     auto y = 3;
     auto m = map!((x) { return x < y; })(a);
     return m;
}
void main()
{
     auto a = [ 1, 2, 3, 4, 5 ];
     auto m = fun(a);
     writeln(m);
}
> Note how map's lambda refers to a symbol local to fun.


I... didn't know that works. Wow! And it also seems to work with
function pointers too. :)
D amazes me every day. :D

Thanks for making such a great language guys!!


More information about the Digitalmars-d mailing list