typedef boost::dynamic_bitset<> Bits; Bits concatenateBitsets(const Bits& first, const Bits& second) { Bits firstCopy(first); Bits secondCopy(second); //Increase the size of the bit buffer to fit the data being placed in it firstCopy.resize(first.size() + second.size()); secondCopy.resize(first.size() + second.size()); //shift the bits in the firstCopy to the left firstCopy <<= second.size(); //"copy" the bits from the secondCopy into the firstCopy firstCopy |= secondCopy; return firstCopy; }