为什么std :: bitset :: reference :: operator~?

时间:2015-09-22 04:06:40

标签: c++ std standards bitset

我正在阅读std::bitset的{​​{3}},我想知道为什么std::bitset::reference明确定义operator~,因为我没有看到任何性能或设计原因。没有它,我认为它同样有效:

bool b = ~mybitset[i];

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

对此设计决定的任何解释?

2 个答案:

答案 0 :(得分:7)

bool b = true;
b = ~b;

此操作后b的值为true

这是因为~bool提升为值{1}的int,然后对结果执行按位 - 不执行,结果为-2,然后将其强制转换为-2 bool这是真的。

因此,它必须提供一个操作符,以便结果符合您的预期。

答案 1 :(得分:3)

由于整体促销活动,~true~1,当转换回false时,bool绝对非零,因此不是source/index.html.erb