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 に答える