【发布时间】:2019-05-23 21:48:44
【问题描述】:
简而言之,restrict 应该告诉编译器指针不能指向相同的内存位置。这对于函数参数和进一步的编译器优化非常有用。在科学计算中,restrict 的使用非常广泛。
目前,restrict 关键字只是 C99 的一部分,而不是 C++ 的一部分。我们know that a lot of C++ compilers support __restrict__ as an extension. This question 还详细讨论了restrict 和__restrict__ 的作用。
现在,上述问题中的讨论发生在很久以前,没有谈论 C++17、C++20,也没有计划未来的标准。我发现 n3988 proposal 讨论了 C++ 中类似于 restrict 的别名、C++ 中具有更丰富语法的复杂性以及潜在的补救措施。
根据 IBM 博客 (2014),n3988 was encouraged for future work。
This question 谈论了restrict 和 C++ 的历史,但没有任何关于实际实现的结论,并提到了我已经列出的论文或the one mentioned in the comments (p1296)。
除了在即将推出的 C++ 中支持 restrict 的计划之外,我找不到任何其他内容(据我所知,它不是 C++17 的一部分)。这似乎是一个非常有用的功能,所以我想知道
- 如果我在提案/讨论方面遗漏了什么?
- 还有其他关于 C++ 中
restrict用法的信息吗? - 是否有其他方法可以通过仅使用“标准”功能来实现编译器优化(
__restrict__允许)?
【问题讨论】:
-
与你上一个问题有关:wg21.link/p1296
标签: c++ standards c++20 restrict-qualifier