https://issues.dlang.org/show_bug.cgi?id=10535
Nick Treleaven <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] See Also| |https://issues.dlang.org/sh | |ow_bug.cgi?id=16269 --- Comment #4 from Nick Treleaven <[email protected]> --- (In reply to Daniel Kozak from comment #3) > auto aa = new VT[KT](); This would be good (although I don't think the () parens serve a purpose). `new AA` is natural syntax for allocating an empty AA, unlike []. Having `new` in the syntax is a great reminder to the programmer that they're allocating memory even though the AA is empty. V[K][6] sixAAs = new V[K]; V[K][6] sixAAs = []; The `new` version above may remind the programmer that each AA reference will point to the same empty heap AA. The `[]` version looks like initializing each AA reference to an empty AA, which isn't clear that the AA references all point to the same memory. In this case the programmer may well have intended each AA reference to point to a unique empty heap AA, so that inserting an element in one isn't reflected into every AA reference. (In reply to monarchdodra from comment #1) > There might be a better "generic" solution to the "empty initialization" > (eg: "arg-less-constructor") problem. For user-defined reference types, the solution is the zero-arg class constructor, `new Container`. That mirrors the `new V[K]` syntax. --
