I advise anyone against using C++ bit-fields because they can be very inefficient (depending on compiler's implementation). Unless the program saves a significant amount of memory by using bit-fields, I would recommend using bytes instead.
As for re-inventing the wheel, the poster does not seem to have a good grasp on bit-fields, so I think it would be better if he at least tried to do the operations himself before persuing the std library solutions.