爲什麼下面的代碼皺起了眉頭?是reinterpret_cast到C風格的數組非法C++ 11?
double d[4] = {0,1,2,3};
reinterpret_cast<double[2]>(d);
GCC聲明它的invalid cast from type 'double*' to type 'double [2]'
和鐺聲明reinterpret_cast from 'double *' to 'double [2]' is not allowed
現在的情況下,意圖不是很明顯,我想這個代碼返回一個double [2]包含{0,1},非常像reinterpret_cast<double*>(d)
會。 (所以我知道它會使用指針工作,所以這不是我在問什麼)
沒有表達式可以在C或C++中產生數組 - 數組不能爲右值。他們總是有一個名字和一個地址。 – JohannesD
@JohannesD是一個字符串文字表達式? :P –
@ R.MartinhoFernandes該死的,你讓我在那裏:P另外,在C99中有數組字面值......噢。也許正確的事情是,在運行時不能有*臨時*數組對象。字符串文字(大概是C99數組文字)仍然是左值,而不是右值。 – JohannesD