On Thu, Oct 3, 2019 at 2:00 PM Oleg B via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > > Hello all > > I think this code must get compilation error, but it didn't, > furthermore result program get UB. > > https://run.dlang.io/is/Qpr278 > > Is this correct behavior and why?
when you change it a litle it seems works ok: import std.stdio; struct Foo { int delegate() dg; void foo(return scope int delegate() dg) { this.dg = dg; } int call() { return dg(); } } Foo getFoo() { int x = 42; Foo ret; ret.foo(() => x); return ret; } void main() { writeln(getFoo().call()); }