Thread overview
void[0][string] hash = [ "text" : [] ] gives empty array.
Feb 06, 2014
Cooler
Feb 07, 2014
Maxim Fomin
Feb 07, 2014
ed
February 06, 2014
The code compiled and runs successfully:
  void[0][string] hash = [ "text" : [] ];
  writeln(hash);
  assert(hash.length == 0);

Output result is "[]".

Is that a bug?
February 07, 2014
On Thursday, 6 February 2014 at 21:37:34 UTC, Cooler wrote:
> The code compiled and runs successfully:
>   void[0][string] hash = [ "text" : [] ];
>   writeln(hash);
>   assert(hash.length == 0);
>
> Output result is "[]".
>
> Is that a bug?

http://dlang.org/arrays.html

A static array with a dimension of 0 is allowed, but no space is allocated for it. It's useful as the last member of a variable length struct, or as the degenerate case of a template expansion.

Judging by compler output, zero size static arrays are removed completely, so no surprise that nothing is done.
February 07, 2014
On Friday, 7 February 2014 at 03:33:10 UTC, Maxim Fomin wrote:
> On Thursday, 6 February 2014 at 21:37:34 UTC, Cooler wrote:
>> The code compiled and runs successfully:
>>  void[0][string] hash = [ "text" : [] ];
>>  writeln(hash);
>>  assert(hash.length == 0);
>>
>> Output result is "[]".
>>
>> Is that a bug?
>
> http://dlang.org/arrays.html
>
> A static array with a dimension of 0 is allowed, but no space is allocated for it. It's useful as the last member of a variable length struct, or as the degenerate case of a template expansion.
>
> Judging by compler output, zero size static arrays are removed completely, so no surprise that nothing is done.

This should be a compiler error, no?

void[0], OK
void[0][], ERROR

Cheers,
ed