Top 5

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Oct 10 11:24:51 PDT 2008


Jarrett Billingsley wrote:
> On Fri, Oct 10, 2008 at 11:54 AM, Benji Smith <dlanguage at benjismith.net> wrote:
> 
>>> new T[x] is a brain-dead syntax that I wish Walter hadn't imported in the
>>> first place.
>> Really? I think it's very valuable.
>>
>> The "new T[x]" syntax lets you construct an array as an RValue. Without that
>> syntax, you have to declare an array before using it.
> 
> No, what he's getting at is that "new T[x]" does not mean "allocate a
> statically-sized array", it means "allocate a dynamically-sized
> array".  "new T" for any T should mean "allocate a T", not "allocate
> something that's kind of close to a T."
> 
> What Andrei is implying, then is that for dynamic arrays, we should
> have to use the (already-legal) "new T[](n)" form, and "new T[x]"
> would mean to allocate a statically-sized array on the heap.

Well yah but I think this will confuse people coming from C++. I just 
wish new was abolished entirely:

struct S {}
auto a = S();
auto b = Object();
auto c = char[](15);
auto d = char[15]();

So in general Type followed by "(" ...optional arguments... ")" yields a 
value.


Andrei



More information about the Digitalmars-d mailing list