It looks like the rt is not calling the postblit constructor when concatenating arrays. For example, the following code:
import std.stdio; struct Test { this(this) { writeln("copy done"); } void opAssign(Test rhs) { writeln("assignment done"); } ~this() { writeln("destructor called"); } } void main() { Test[] tests = new Test[1]; { Test test; tests ~= test; } writeln("done"); } Gives the following output: destructor called done The dtr for 'Test test;' is getting call after the scope exits but the postblit ctr for 'tests[0]' is never called. I believe the output of this code should either be: done or: copy done destructor called done Thanks! -Jose