2013-10-27 99 views
0

我能做到以下幾點:我可以使用__restrict聲明的指針填充範圍嗎?

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

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

它說,對於指針的壽命,只有它或從它直接導出的值 (諸如指針+ 1)將被用於訪問 目的是它指出。

arr + 50是好的,因爲它是從arr,這是一個restrict編指針的。

+1

你是互聯網非常有天賦的用戶,謝謝。 – arman

+0

@ausairman,哈哈,很高興成爲服務:-) –