我正在更新性能关键库以使用限制,正如 g++ 和 MSVC 在 C++11 中使用关键字实现的那样__restrict
。这似乎是最标准的扩展,所以我将使用restrict
和__restrict
互换。
restrict
是一个 C99 关键字,但是编译器已经在 C++ 中定义了它的重要用途。
这篇文章打算成为一个“问题”,询问每个 C++ 特定用途是什么以及它的含义,然后是一个 CW 答案来回答它。随意添加/检查/编辑。所以:“帮助!这些 C++ 使用的restrict
关键字是什么意思?”
限定
this
(限制方法):void Foo::method(int*__restrict a) __restrict { /*...*/ }
限制引用:
int&__restrict x = /*...*/;
限制在模板内:
std::vector<float*__restrict> x;
限制成员/字段。这在技术上也适用于 C
struct
,但它在 C++ 中比在 C 中更频繁地出现:class Foo final { public: int*__restrict field; };