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

Vin*_*ent 3 c++ standards std bitset

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

bool b = ~mybitset[i];
Run Code Online (Sandbox Code Playgroud)

因为引用将转换为bool,~操作符将应用于bool .

对此设计决定有何解释?

Nei*_*irk 7

bool b = true;
b = ~b;
Run Code Online (Sandbox Code Playgroud)

b此操作后的值是true!

这是因为~促进了boolint的值1,然后执行按位不上的结果,这解析为-2,然后投射该回bool这是真实的.

所以它必须提供一个操作员,以便结果是你所期望的.