This implements an operator on std.bitmanip.BitArray, to append one or more bits at the beginning: BitArray opCatAssign(BitArray b) { auto istart = len; length = len + b.length; for (auto i = istart; i < len; i++) this[i] = b[i - istart]; return this; } BitArray opCat_r(bool b) { BitArray r; r.length = len + 1; r[0] = b; for (size_t i = 0; i < len; i++) r[1 + i] = this[i]; return r; } I think there are faster ways to perform those operations, that avoid copying single bits, and work mostly with a memmove() on the array of size_t pointed by BitArray.ptr (followed by few single bit copies if necessary). In my code I have found that opCat_r() to be slow.
See also 7488 and 7490
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9922 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB