为什么std:: bitset::参考::操作符~

Why std::bitset::reference::operator~?

本文关键字:操作符 参考 bitset std 为什么      更新时间:2023-10-16

我正在阅读std::bitset的文档,我想知道为什么std::bitset::reference明确定义operator~,因为我没有看到任何性能或设计原因。如果没有它,我想它也会工作得很好:

bool b = ~mybitset[i];

,因为引用将被转换为bool, ~运算符将应用于其上。

对这个设计决定有什么解释吗?

bool b = true;
b = ~b;

操作后b的值为true !

这是因为~将值为1的bool提升为int,然后对结果执行位不操作,解析为-2,然后将其强制转换回为true的bool

所以它必须提供一个运算符,使结果符合你的期望

由于积分提升,当转换回bool时,~true~1,它绝对是非零的,因此不是false