限制pointer aliasing ,到目前为止,我已经使用了 __restrict__
类型限定符,如 here 所述在 GNU GCC 编译器提供的 C++ 扩展部分。例如下面的函数,
void fn (int *__restrict__ rptr, int &__restrict__ rref)
{
/* ... */
}
接受一个受限指针和一个受限引用作为其参数。
随着unique_ptr
的引入进入 C++ 标准,我想知道 GCC 编译器是否会通过使用 unique_ptr
提供相同的优化(或更好)的机器代码。
是否还应该使用像 __restrict__
这样的扩展?在更新的 C++ 标准中是否有更好的方法来产生相同的优化(对于指针和引用)?
最佳答案
__restrict__
和 unique_ptr
做不同的事情。 __restrict__
promise 没有其他内容引用此对象(因此编译器可以优化)。 unique_ptr
管理堆分配对象的生命周期。它不允许优化器做出任何假设。
如果有一种方式说“这个 unique_ptr
是引用这个对象的唯一方式”,那就太好了,但我不知道 GCC 是否支持。
关于c++ - 在 C++ 中使用 `restrict` 类型限定符和 `unique_ptr` 的受限别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481314/