On Wednesday, 20 August 2014 at 14:44:39 UTC, Etienne wrote:
I've been hearing that delegates get a context pointer which will be allocated on the GC. Is this also true for delegates which stay in scope?

e.g.

void addThree() {
        int val;
        void addOne() {
                val++;
        }
        
        addOne();
        addOne();
        addOne();

        return val;
}

Will the above function allocate on the GC?

int getInt1() @nogc
{
        int val;
        int func() @nogc { return val; }
        return func();
}

int delegate() getInt2() //@nogc - thie one allocates!
{
        int val;
        int func() @nogc { return val; }
        return &func;
}

int delegate() getInt3() @nogc
{
        int val;
        int func() @nogc { return 0; }
        return &func;
}

Reply via email to