On Sunday, 7 August 2016 at 23:02:26 UTC, ag0aep6g wrote:
Not exactly. When you do something that requires a closure, it errors out. As I said, a delegate doesn't always require the allocation of a closure.
You can also throw scope in there iff the delegate will never be stored:
@nogc void foo(scope void delegate(int x) @nogc f) {}Then it won't allocate the closure even if it is a context that usually needs it, but if you store it then, you are liable to memory corruption.