They tried to make this convenient with std::vector<bool> in C++, which turned out to be a bad idea in general.
It should also be pointed out that storing those booleans as bits is not the only alternative. For a trivial example one could have millions of sorted bools and just store how many are true, then storage becomes constant.
yes, exactly. Access/modification of a directly addressable byte is much faster than some bit of it.
If I'm not mistaken, on Win32 `BOOL` data type is defined even worse to a 32bit int (this C API was devised way before `bool` has made it's way into C), so 8bits isn't even the worst case scenario :D