I am not sure if this is a bug but the behavior is strange. http://dpaste.dzfl.pl/c37e673f module program; import std.stdio; struct S1 { int i; this (this) { writeln("S1 postblit"); } } struct S2 { S1 v; C c1; this (S1 v) { this.v = v; this.c1 = new C(&this.f); } this (this) { writeln("S2 postblit"); this.c1 = new C(&this.f); } S1 f () { return this.v; } } class C { S1 delegate () d; this (S1 delegate () d) { this.d = d; } } auto f (S1 v) { return S2(v); } void main () { auto s1 = f(S1(5)); writeln(s1.c1.d().i, " == 5 ?"); }
It looks like issue 9352 (delegate captures struct stack pointer which becomes invalid)
*** This issue has been marked as a duplicate of issue 9352 ***