On Wednesday, 16 July 2025 at 13:29:01 UTC, z wrote:
I also see this in the language documentation :
```
A void array cannot be indexed.
```
But i can slice it just fine in DMD 2.111...
Is this by design or is there a hole in the language
specification?
The sentence before says:
Array indices in slicing operations are interpreted as byte
indices
And the example shows slicing:
```d
void[] arr = data1; // OK, int[] implicit converts
to void[].
...
arr[0..4] = [5]; // Assign first 4 bytes to 1
int element
```
Slicing a void array is useful as it can refer to multiple bytes.
Indexing a void array is not really useful because if the array
is only holding bytes, then why not use byte[] instead? If it's
not a byte, then indexing it is probably wrong anyway (either by
design, or because dealing with a single byte at a time is
inefficient).
By extension what the differences between `void`, `ubyte`,
`void[]`, `ubyte[]` really? The language documentation doesn't
appear to be explaining everything.
Thanks in advance
The docs explain the difference between the two array types.
Perhaps there should be an entry for `void` in the types page. A
`void` value cannot be accessed. `void.sizeof` is 1 so that a
void array can have length equivalent to the number of bytes in
the array.