How to provide this arg or functor for algorithm?
thedeemon via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 17 09:18:47 PDT 2015
On Monday, 17 August 2015 at 12:38:05 UTC, anonymous wrote:
> auto func()(uint[] arr, uint delegate(uint) pure @nogc d) @nogc
> {
> return arr.map!(d);
> }
>
> void main() @nogc
> {
> uint[3] arr = [1,2,3];
> uint context = 2;
> auto c = Caller(context);
> auto d = &c.method;
>
> auto r = func(arr[], d);
>
> import std.algorithm: equal;
> import std.range: only;
> assert(equal(r, only(2, 4, 6)));
> }
I've just checked with my runtime GC hook. Here the call to
func() allocates 12 bytes via gc_malloc, and it's the same for a
4-elements array, so it's not for the array itself, it's for a
closure, I think.
More information about the Digitalmars-d-learn
mailing list