bob*_*eff 5 c++ pointers strict-aliasing language-lawyer
在 C 中有一个restrict关键字告诉编译器在函数的指针参数之间没有别名,允许它以这种方式执行一些否则将不允许的优化。例如:
void add(int* restrict ptrA,
int* restrict ptrB,
int* restrict val)
{
*ptrA += *val;
*ptrB += *val;
}
Run Code Online (Sandbox Code Playgroud)
现在函数体中的指令可以并行执行,因为val和 某些ptr参数之间没有别名。在 C++ 中没有restrict关键字。
restrictC 中的语义?例如MSVC、g++、clang++和Intel C++ compiler。restrict在未来的 C++ 标准中是否有任何计划要标准化的关键字?