MaskOffset
#define MASKOFFSET(mask) (MaskOffset<mask, (mask & 1UL)>::count)
enum { count = MaskOffset<(mask >> 1), ((mask >> 1) & 1UL)>::count + 1 };
struct MaskOffset<mask, 1>