我想出了下面的問題(下面的代碼):自動模板專門的模板函數參數
template<class T>
void printname(const T& t){std::cout<<t<<std::endl;}
template<class T>
void applyfunc(const T& t, void (*f)(const T&)){(*f)(t);}
int main(){
const int a=1;
applyfunc(a,printname);
getchar();
return 0;
}
我的問題是,它與VC++ 8(VS2005)編譯和GCC,鏘(上Ubuntu 12.04) ,但無法使用vC++ 2008 express進行編譯。
這似乎是合法代碼,但我真的不明白爲什麼。
如果有人能解釋它,我會很感激。
假設它是合法的,有沒有什麼辦法可以做類似的工作嗎?
VS2008 Express會出現什麼錯誤? – Praetorian
你在問VS2008爲什麼拒絕代碼,或者爲什麼其他人接受它?*這似乎是合法的代碼,但我真的不明白爲什麼*另外,我不確定有什麼方法可以用類似的方法完成函子的操作。*真的意味着什麼。你想做什麼類似的事情? –
@Praetorian:C2896,C2784不能使用函數模板void(*)(const T&)作爲函數參數 – user2588533