bitCount() and bitfieldReverse() require integer inputs, so a check should be performed wether they are or not.
Additionally, bitfieldReverse() throws warning C4309 in Visual C++ if typename T (the argument's underlying type) isn't unsigned long long or u64vec respectively, because unsigned long long constants are cast to T.
Since the casting is intentional, you might want to silence the warning for this part of the code.