2013-03-05 128 views
2

對於產生這個問題;makeDelegate函數不能正常工作

我有以下功能;

template<typename... Arguments, typename... Params> 
Runnable<Params...>* makeRunnable(void (*FunctionType)(Arguments..., Params...), Arguments... args) 
{ 
    return new FunctionDelegate<Arguments..., Params...>(FunctionType, makeTuple(args...)); 
} 

哪,我想,以適應由「永遠」給出的解決方案,在上一個問題,我已經試過沒有任何的運氣。

template<typename... Arguments, typename... Params> 
Runnable<Params...>* makeRunnable(void (*FunctionType)(tuple<Arguments...>, tuple<Params...>), tuple<Arguments...> args) 
{ 
    return new FunctionDelegate<tuple<Arguments...>, tuple<Params...>>(FunctionType, args); 
} 

這會產生錯誤;

error: no matching function for call to ‘makeRunnable(void (&)(tuple<int, int>, tuple<int>), tuple<int, int>)’ 

回答

3

我設法自己解決它;

// Create a function delegate as runnable 
template<typename... Arguments, typename... Params> 
Runnable<Params...>* makeRunnable(void (*FunctionType)(tuple<Arguments...>, tuple<Params...>), Arguments... args) 
{ 
    return new FunctionDelegate<tuple<Arguments...>, tuple<Params...>>(FunctionType, makeTuple(args...)); 
}