Dynamic array creation with default

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Aug 23 07:45:33 PDT 2011


On 8/23/11 6:15 AM, foobar wrote:
> == Quote from bearophile (bearophileHUGS at lycos.com)'s article
>> foobar:
>>> you raise a valid concern but this looks too complicated.
>>> I'd suggest to simplify into only two cases.
>>>
>>> // 1) T.INIT - as you suggested the dimension should be checked
>>> auto foo = new int[][](10, 20); // correct
>>> auto foo1 = new int[][](10); // compilation error
>> Keep in mind that currently this is correct and it generates a 1D dynamic array:
>> auto v = new int[10];
>
> Isn't this an inconsistency in the language?
>
> // Generally speaking, allocates an instance of T on the heap
> auto foo = new T;
>
> However, "int[10]" and "new int[10]" are different types.

I hate that, too. Walter hates it, too, but we both reckon it's too late 
now to change things. It makes it impossible to create an instance of 
the type "int[10]" dynamically because of an gratuitous syntactic 
special case. It comes from C++, where it was an unforced error.

Andrei


More information about the Digitalmars-d mailing list