【发布时间】:2015-03-05 16:35:23
【问题描述】:
以下代码无法编译
#include <vector>
int main()
{
std::vector<bool> enable(10);
enable[0] |= true;
return 0;
}
给出错误
no match for ‘operator|=’ (operand types are ‘std::vector<bool>::reference {aka std::_Bit_reference}’ and ‘bool’)
在我的实际代码中,我有一个位字段,其中包含我想要|= 的值以及函数的结果。
有很多简单的方法可以表达相同的想法,但是有什么好的理由不提供这样的运算符吗?
【问题讨论】:
-
你仍然可以做
enable[0] = enable[0] | ...。 -
为什么不使用
bitset -
@Borgleader 在我的真实代码中长度是动态的
-
@Borgleader:因为那也不直接支持这个操作。
-
@Amxx,也许是 Boost 的
dynamic_bitset?它的引用类型确实有复合赋值重载。
标签: c++ bit-fields boolean-operations