Dicebot:
Just in case, the key line to pay attention to in that example
is this one:
CellIndex[0] c_;
When you define dynamically sized structs it's also a good idea
to wrap the items access with some kind of get/set functions, to
make the code less bug-prone (and sometimes there is also a
length available somewhere that those functions can use to verify
the bounds in non-release builds).
It is a commonly used C idiom for dynamically sized structures
that D also supports.
D supports zero length fixed size arrays for this usage too. And
recently their .ptr was changed from null to their start addreess
to improve this usage.
Bye,
bearophile