Fixed size array initialization

b2.temp at gmx.com b2.temp at gmx.com
Sat Feb 10 12:28:16 UTC 2018


On Saturday, 10 February 2018 at 10:55:30 UTC, rumbu wrote:
> I know that according to language spec 
> (https://dlang.org/spec/arrays.html#static-init-static) you can 
> skip declaring all your elements in a fixed size array.
>
> I'm just recovering from a bug which took me one day to 
> discover because of this.
>
> I have a large static initialized array, let's say int[155], 
> and I forgot to declare the last element:
>
> int[155] myarray = [
>   a,
>   b,
>   c,
>   ...
>   //forgot to declare the 155th element
> ];
>
> I took for granted that the compiler will warn me about the 
> fact that my number of elements doesn't match the array 
> declaration but I was wrong.
>
> Does it worth to fill an enhancement on this, or this is 
> intended behavior?

I used to agree (https://issues.dlang.org/show_bug.cgi?id=17341) 
and even patched the compiler to emit a deprecation in this case. 
Then i discovered that druntime for example relies on this.

The classic use case is to init a LUT where only a few elements 
need a non-default value, for example:

```
bool[char.max] lut = [10:true, 13:true, 9: true];
assert(!lut[46]);
assert(lut[9]);
```

which can be useful.



More information about the Digitalmars-d-learn mailing list