I did some tests with the operator &=. As the following examples shows, this works for single bool type as well as a vector<int> type, but not vector<bool>. 
#include <vector>
int main (){
    bool a, b;
    a &= b; // ok
    std::vector<bool> c(1);
    c[0] &= b; // error
    c[0] = c[0] & b; // ok
    std::vector<int> d(1);
    d[0] &= b; // ok
    return 0;
}
Can anyone tell what is going on here?
(I'm using gcc 4.4.3)
 
     
     
    