The demise of T[new]

Walter Bright newshound1 at digitalmars.com
Sun Oct 18 14:05:39 PDT 2009


The purpose of T[new] was to solve the problems T[] had with passing T[] 
to a function and then the function resizes the T[]. What happens with 
the original?

The solution we came up with was to create a third array type, T[new], 
which was a reference type.

Andrei had the idea that T[new] could be dispensed with by making a 
"builder" library type to handle creating arrays by doing things like 
appending, and then delivering a finished T[] type. This is similar to 
what std.outbuffer and std.array.Appender do, they just need a bit of 
refining.

The .length property of T[] would then become an rvalue only, not an 
lvalue, and ~= would no longer be allowed for T[].

We both feel that this would simplify D, make it more flexible, and 
remove some awkward corner cases like the inability to say a.length++.

What do you think?



More information about the Digitalmars-d mailing list