2015-10-01 76 views

回答

25

這是因爲你的情況成爲右值。你不能分配一個右值。更改爲左值來代替:

std::is_assignable<X*&, Y*>::value 
//     ~^~ 
25

std::is_assignable檢查:

如果表達式std::declval<T>() = std::declval<U>()是中規中矩,在未計算的背景下

但你不能分配給一個右值(這是什麼declval<X*>()會)。你需要對分配的左手側的左值

std::is_assignable<X*&, Y*>::value 

這將是真實的。如果Clang返回true,那絕對是Clang的bug。

相關問題