使用bool作为l值

时间:2015-12-01 09:00:34

标签: c++ iterator int boolean dereference

类型 int 但是给出"错误C2102:'&'需要l值"当类型 bool 时。为什么呢?

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);

1 个答案:

答案 0 :(得分:4)

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

事后看来,这种专业化被视为一种错误。现在通常建议避免使用vector<bool>。替代方案包括std::bitset