Dynamic array creation with default

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Tue Aug 23 11:27:30 PDT 2011


On Tue, 23 Aug 2011 07:45:33 -0700, Andrei Alexandrescu wrote:

> 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.

I, for one, would welcome this change.  It's a horrible inconsistency in 
the language.

-Lars


More information about the Digitalmars-d mailing list