以下のコードを単純化するにはどうすればよいですか?ここでタプルを使用するのは可能でしょうか?はいの場合は、どのように説明することができます。テンプレートの実装でパラメータとしてstd :: functionを使用するバリアリックテンプレート
template<typename Out, typename T1, typename T2, typename T3, typename T4>
void ProcessIncomingCommand(PClientContext pClientContext,
DWORD & bytesProcessed,
const std::function<Out(T1, T2, T3, T4)> &function,
const std::vector<UINT> ¶ms);
template<typename Out, typename T1, typename T2, typename T3>
static void ProcessIncomingCommand(PClientContext pClientContext,
DWORD & bytesProcessed,
const std::function<Out(T1, T2, T3)> &function,
const std::vector<UINT> ¶ms);
template<typename Out, typename T1, typename T2>
static void ProcessIncomingCommand(PClientContext pClientContext,
DWORD & bytesProcessed,
const std::function<Out(T1, T2)> &function,
const std::vector<UINT> ¶ms);
UINT
のstd::vector
によって渡されたパラメータを使用して機能を呼び出すために必要とされます。パラメータは異なる可能性があるため、適切な型にキャストする必要があります。
auto resFromFunction= function(params.at(0),
params.at(1),
static_cast<T3>(params.at(2)),
static_cast<T4>(params.at(3)));
ここではlog0答えを使用できますか?
template<typename Out, typename... T>static void ProcessIncomingCommand(PClientContext pClientContext,
DWORD & bytesProcessed,
const std::function<Out(T...)> &function,
const std::vector<UINT> ¶ms)
のような何かをしたいように見えますか?このコードの目的は何ですか? – InternetAussie
タプルはどのように使用されますか? – log0
実現では、私はUINTのベクトルによって渡されたパラメータで関数を呼び出します。ベクトルの型はテンプレートargs(T ...)と異なる場合があります。私はそれらを適切なタイプにキャストする必要があります。例:function(static_cast(params.at(0))、...)などここでテンプレートを使用するのは適切な方法ですか? –