使用 bool 作为左值

Using bool as l-value

Typeint 时编译正常,但当 Type[=17] 时给出 "error C2102: '&' requires l-value" =] 是 布尔值 。为什么?

std::vector<Type> Vector;
Vector.push_back(false);
Vector.push_back(true);
Vector.push_back(true);

const void* Pointer = NULL;
for (std::vector<Type>::const_iterator it = Vector.begin(); it != Vector.end(); ++it)
    Pointer = &(*it);

vector 专门用于 bool,并且在该专门化中,*it 不是左值。无法指向向量中的单个 bool

事后看来,这个专业化被认为是一个错误。现在通常建议避免使用 vector<bool>。备选方案包括 std::bitset.