2

对于产生这个问题的问题;

我有以下功能;

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

我想适应'ForEveR'给出的解决方案,在上一个问题中,我试过没有任何运气。

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>)’
4

1 回答 1

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...));
}
于 2013-03-05T12:05:30.773 回答