On Sunday, 12 July 2015 at 10:39:44 UTC, Tofu Ninja wrote:
On Sunday, 12 July 2015 at 10:19:02 UTC, Baz wrote:
[...]

That is not manually allocating a delegate context, and & in that instance does not even allocate. For delegates to class methods, the context is just the "this" pointer of the object, so the context in that code is just foo, which you still allocated on the gc. The delegate itself (the function pointer and the context pointer) is just allocated on the stack.

What I am talking about is the context that implicitly gets allocated when you make a delegate to a nested function.

void main(string[] args)
{
        auto d = bar();
        d();
}


auto bar()
{
        int x = 5;
        
        void foo()
        {
                writeln(x);
        }
        
        auto d = &foo; // <-- allocates
        return d;
}

At least now your Question is clearer and understandable...but sorry goodbye. I don't feel good vibes here. See ya ^^.

Reply via email to