简而言之,restrict
应该告诉编译器指针不能指向相同的内存位置。这对于函数参数和进一步的编译器优化非常有用。在科学计算中,restrict
应用非常广泛。
目前,restrict
关键字只是 C99 的一部分,而不是 C++ 的一部分。我们知道很多 C++ 编译器都支持__restrict__
作为扩展。这个问题还详细讨论了做什么restrict
和__restrict__
做什么。
现在,上述问题中的讨论发生在很久以前,没有谈论 C++17、C++20,也没有计划未来的标准。我发现n3988 提案讨论了 C++ 中的类似restrict
别名、C++ 中具有更丰富语法的复杂性以及潜在的补救措施。
根据 IBM 博客 (2014),鼓励 n3988 用于未来的工作。
这个问题讨论了restrict
和 C++ 的历史,没有任何关于实际实现的结论,并提到了我已经列出的论文或评论中提到的论文 (p1296)。
除了即将推出的 C++的支持计划之外,我找不到任何其他内容restrict
(据我所知,它不是 C++17 的一部分)。这似乎是一个非常有用的功能,所以我想知道
- 如果我在提案/讨论方面遗漏了什么?
- 还有其他关于
restrict
C++ 用法的信息吗? __restrict__
是否有其他方法可以通过仅使用“标准”功能使编译器优化(允许)成为可能?