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.

Reply via email to