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 ^^.