In the following example closure isn't detected: --- import std.stdio; void copyDel()(out void delegate() dest, void delegate() src) { dest = src; } void g(out void delegate() del) { int i; void f() { writefln("&i: %X (should be in heap)", &i); } copyDel(del, &f); } void main() { int j; writefln("A heap address: %X", new int); writefln("A stack address: %X", &j); void delegate() del; g(del); del(); } --- Output: --- A heap address: A01E70 A stack address: 12FE64 &i: 12FE50 (should be in heap) <- not in heap ---
*** Issue 6768 has been marked as a duplicate of this issue. ***
Fixed in 2.063, because it's a dup of issue 9834. *** This issue has been marked as a duplicate of issue 9834 ***