使用 bool 作为左值
Using bool as l-value
当 Type 为 int 时编译正常,但当 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
.
当 Type 为 int 时编译正常,但当 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
.