今天我遇到了一個可怕的問題。 我一直在使用可變參數模板來處理整個框架。事實證明,我正在使用的那個人使用visual studio,它還不支持可變模板。MSVC的可變模板
我試圖通過使用宏無縫地移植功能,但經過長時間的工作,它看起來像是不可能的。 問題是模板的參數數量可能會從零變化到四(或使用可變參數模板變爲無窮大)。
即使我的宏製成,並且花費在這樣的事情:
template<>
Signal<void()>
{
// My class
};
或
template<typename param1>
Signal<void (param1)>
{
// My class
};
但問題是,它看起來像這樣不使用GCC的(所以我假設它不會與vc一樣)。
頭不顯示任何錯誤,但如果我嘗試實例化的類是這樣的:
Signal<> mySignal;
我得到這些樣的錯誤:
error: wrong number of template arguments (0, should be 1)
因爲我覺得沒有信息關於這個問題,我至少想知道我正在嘗試的是否可能? 或者如果我真的要再次寫數百行代碼,因爲微軟認爲variadic模板不夠重要?
「Microsoft不認爲可變模板足夠重要嗎?」微軟認爲他們很重要。他們嘗試過,但未能讓他們進入VS11。 – bames53
如果您正在編寫信號框架(如在信號事件中),請考慮將已有的庫用作'boost :: signal'或'boost :: signal2'。 –