```D
import std;

void main()
{
    void[] a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 0x12345678];
    void[] b = cast(ubyte[])[0, 1, 2, 3, 4, 5, 6, 7, 8];
ubyte[] c = cast(ubyte[])(cast(void[])[0, 1, 2, 3, 4, 5, 6, 7, 8,0x12345678]);
    ubyte[] d = [0, 1, 2, 3, 4, 5, 6, 7, 8];
    void[] e = cast(ubyte[])a;// same result as a
    void[] f = cast(void[]) a;// same result as a
    writeln(a);
    writeln(b);
    writeln(c);
    writeln(d);
    writeln(e);
    writeln(f);
    writeln(void.sizeof);
}

```
```
[0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 120, 86, 52, 18]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 120, 86, 52, 18]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 120, 86, 52, 18] [0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 120, 86, 52, 18]
1
//it also appears to expose the platform's endianness
```
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? By extension what the differences between `void`, `ubyte`, `void[]`, `ubyte[]` really? The language documentation doesn't appear to be explaining everything.
Thanks in advance

Reply via email to