On Monday, 18 May 2015 at 14:43:33 UTC, Steven Schveighoffer wrote:
Right, you'd apply the map/array combo to each element:

Yes, I knew it.

alias m = map!(a => a.dup); // too bad can't do array as well

auto s = [m(["foo", "baz"]).array, m(["bar", "test"]).array];

Or to get even more crazy:

auto s = map!(a => map!(a => a.dup)(a).array)(/* your input array */).array;

Imagine a five-dimensional array will be :)

But this means you are duping more of the array literal than you really should.

It's likely helpful to have somewhere in std.array a dupArray function that does map!(a => a.dup).array work in one go (and without making a temporary array):

auto s = [dupArray("foo", "baz"), dupArray("bar", "test")];

Yes, it would be nice. I believe that Phobos need such function.

deepDup would dup the whole thing. All you need to dup is the string literals, as array literals constructed at runtime are on the heap (and mutable) already. The literal already is wasted even in my original suggestion, but this is doubly wasteful.

Right.

Reply via email to