0
使用Microsoft Visual Studio 2012,我嘗試編譯如下:讓函數指針模板參數接受右值引用是否合法?
template <void (*f)(int && y)>
void foo() {}
,並得到這個錯誤:
error C2993: 'int &&' : illegal type for non-type template parameter 'y'
那真的是非法的?或者這是MSVS中的錯誤?如果是這樣,有沒有人知道它是否能在更高版本中使用?
這裏沒什麼不合法的。可能是因爲函數指針類型的第一個參數名稱爲'y',MSVC會感到困惑,在這裏這不是必需的。嘗試'template'。 –
jrok
2014-10-29 13:40:15
在VS2013中起作用。 – 2014-10-29 13:44:53
對於G ++,您必須添加-std = C++ 0x作爲編譯器選項,否則它將不會被解析。 – SCFrench 2014-10-29 17:49:38