为什么std:: bitset::参考::操作符~
Why std::bitset::reference::operator~?
我正在阅读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
。
相关文章:
- C++错误消息*成员参考.**初学者*
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 为什么在运算符重载时需要参考?
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- std::shared_ptr 自定义参考计数器
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 避免在基于反向范围的for循环实现中悬挂参考
- 通用参考 l 值不复制对象
- 标准::enable_if和通用参考的使用差异
- 标准::积累参考?
- C++丢失了参考
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 矢量的通用参考
- 为什么"fun(i)"被推导出为"fun<int&>"而不是"fun<int>",因为"i"是"int"的类型而不是参考?
- C++17 和静态临时生存期的参考扩展
- C++ 参考:这两个语句有什么区别?
- 如何理解 C++17 标准参考中的 [intro.object]/3? N4659 的
- 为什么std:: bitset::参考::操作符~