c++ - 为什么 C++ 标准为 cv 限定符定义部分排序?
问题描述
C++20 标准(在 N4892 上检查)指出:
cv 限定符有一个偏序,因此可以说一个类型比另一个类型更具有 cv 限定。表 13 显示了构成此排序的关系。
6.8.4.5。
使用表 13:
no cv-qualifier < const
no cv-qualifier < volatile
no cv-qualifier < const volatile
const < const volatile
volatile < const volatile
尽管定义非常清晰易懂,但我想知道它为什么存在。我在标准中找不到另一个使用这种顺序的段落(我可能错过了一些东西!)。Cppreference有同一个表,但也没有说明它的用途。
为什么存在这种偏序?
解决方案
只需在标准文档中搜索“more cv-qualified”即可。会有很多比赛。也许是最明显的例子:
char* pointer1;
...
const char* pointer2 = pointer1; // OK because it's more cv-qualified
在我看来,如果您正在寻找常识,只需考虑“const”而不是“cv”。
推荐阅读
- java - 如何找到文本中出现频率最高的单词?
- php - WooCommerce 自定义插件:WC_Customer 对象实例周围出错
- python - ImportError:无法从“PIL”导入名称“_imaging”。昨天工作正常吗?
- gitlab-ci - Gitlab CI exit 1即使成功
- kubernetes - Kubernetes集群Mysql节点存储
- javascript - 破译任何传递的字符串
- azure-active-directory - 刷新从 Aadtokenprovider 生成的令牌时出现问题
- android - firebase 控制台未显示我的应用程序崩溃报告
- substrate - 无法部署合约(Substrate)系统。ExtrinsicFailed 其他
- javascript - 即使从另一个 HTML 页面重定向后,仍保留 HTML 中的表单值