次のように呼び出す関数を書きたいと思います。
f("a", 1, [](float a ) { … });
f("a", 1, "b", 2, [](float a, float b ) { … });
f("a", 1, "b", 2, "c", 3, [](float a, float b, float c) { … });
関数が何をするかは重要ではありません。ポイントは、char*/integer パラメーターの各ペアがf
、ラムダ関数の float パラメーターに対応することです。私はこれまでに得ます:
template <typename ...Args>
void f(Args... args, std::function<void(???)> cb);
パラメーターのカーディナリティが入力ペアのカーディナリティと一致するように、ファンクター型を宣言するにはどうすればよいですか?