Joseph Rushton Wakeling:
I take it you mean std.bitmanip.BitArray ... ?
Right.
I ran into some interesting problems which are probably down to
incomplete
implementation: e.g.
myBitArray.length += n;
... results in a compiler error message: myBitArray.length() is
not an lvalue
This is just a missing feature. Someone should implement it.
std.bitmanip.BitArray lacks several small features.
BitArrays are also not sliceable, it seems.
This is a bit more complex to implement in BitArray.
One way to implement it is to copy all the sliced data, with no
alignment, and create a new BitArray. But this is semantically
different from the regular array slicing (that doesn't copy data).
If you don't want to copy data then you have to add to BitArray a
field (one ubyte one uint, if you use an ubyte it needs a static
if for static safety) that represents the 0..(size_T.sizeof * 8)
offset. But this could slow down a bit the access of single bits.
Bye,
bearophile