标题说明了一切。我很好奇为什么限制关键字不是 C++ 的一部分?我对 C++ 了解不多,而且我仍然无法在网上找到任何可以阻止它的理由。如果 C++ 标准会像 C 那样使用这个关键字,有谁知道会发生什么可怕的事情?它根本不需要吗?
更多解释:这不是关于使用它,也许我这辈子都不会从这个关键字中受益。这个问题只是关于好奇心,因为从 C99 开始,restrict 是 C 的一部分,也就是 15 年。
另请阅读:我对技术原因感兴趣,而不是像“他们只是不喜欢,这还不够酷”之类的观点
标题说明了一切。我很好奇为什么限制关键字不是 C++ 的一部分?我对 C++ 了解不多,而且我仍然无法在网上找到任何可以阻止它的理由。如果 C++ 标准会像 C 那样使用这个关键字,有谁知道会发生什么可怕的事情?它根本不需要吗?
更多解释:这不是关于使用它,也许我这辈子都不会从这个关键字中受益。这个问题只是关于好奇心,因为从 C99 开始,restrict 是 C 的一部分,也就是 15 年。
另请阅读:我对技术原因感兴趣,而不是像“他们只是不喜欢,这还不够酷”之类的观点
在 C++ 中定义“限制”有几个问题,其中一些在 WG 论文 N3635 中列出:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3635.pdf迈向 C++ 的类似限制的语义"
C++ 中限制的一些可能问题是:
- 使用“this指针”限制类成员和间接性
- 将限制限定符传递给函数、函子、lambda 和模板
- 在函数内转义限制指针值
- 重叠数组成员,步幅
文档还列出了几个对 C++ 具有有限“限制”支持的 C++ 编译器。
N3635 中还有一个有趣的历史记录,关于不包含限制到 C++:
在 Mont Tremblant 会议期间审查 C++ 中包含的 C99 功能时,限制被考虑,但正在等待纸质提案,尽管没有提出......
Restrict 是 C99 的一项功能,从未设计用于在类抽象中工作,它可能与指针在 C++ 中不常见有关。...它是为 C 的细粒度别名而设计的,但不是为 C++ 中基于类型的别名而精心设计的