On 6/22/13, Andrej Mitrovic <andrej.mitrov...@gmail.com> wrote: > Appender!(int[]) buffer; > call(buffer); > writeln(buffer.data); // writes [], it's empty
Apparently it's the same thing as the old AA problem. Essentially the buffer would have to be initialized first by appending: ----- import std.array; import std.stdio; void call(Appender!(int[]) buffer) { buffer.put(1); } void main() { Appender!(int[]) buffer; call(buffer); assert(buffer.data.empty); // passes call(buffer); assert(buffer.data.empty); // still passes buffer.put(2); call(buffer); assert(buffer.data == [2, 1]); // now it finally went through } ----- It has something to do with null-initialization. I remember the discussion about this problem with hashes, I just can't remember if there was a bug report about it to link to.