Well, I see, vector<T> is guaranteed to behave as a c-style array when it comes to addressing the data buffer (i.e. there is an internal array). But usually you wouldn't need to use it as a c-style array. And if you know that detail, I actually don't see why you would have to prefer bitset.
Anyway, how is it possible then to have a vector of bools, if vector<bool> is no STL container but automatically included in <vector>?
Sure, you can use other containers, but isn't that kinda dirty? Why didn't they think about a proper standard implementation then? If I want to have a vector<bool>, I want to have a vector<bool> and no dequeue<bool> :<