我可以使用__restrict声明的指针填充范围吗?

时间:2013-10-27 03:03:35

标签: visual-c++

我可以执行以下操作:

int * __restrict arr = new int [100];
std::fill_n(arr + 50, 50, 1); // the arr + 50 temporary aliases arr??
std::fill_n(&arr[50],50,1); // is this ok? No aliasing?

这可能适用于C标准和几乎每个c ++编译器,但我只熟悉visual C ++。

1 个答案:

答案 0 :(得分:1)

根据https://en.wikipedia.org/wiki/Restrict

  

它表示指针的生命周期,只有它或一个值   直接从它派生(如指针+ 1)将用于访问   它指向的对象。

arr + 50没问题,因为它来自arr,这是一个restrict指针。