0

私は次のことを行うコードを書き込もうとしています:カスタムバインド関数の呼び出しがあるとしましょう

auto bind_obj = bind(some_func, _1, "test")  

そして私たちが持った後

auto res = bind_obj(42) 

関数 some_func:

int some_func(int val, string test)

bind_obj(...) など、実際の関数呼び出しで提供される引数とプレースホルダーを一致させるにはどうすればよいでしょうか?

つまり、std::tuple (ここでは引数とプレースホルダー) と variadic pack (関数の引数) を反復して次のことを行うことは可能ですか?

  1. 関数 some_func の戻り値の型を推測します。
  2. some_func() 呼び出しでさらに使用するために正しい std::tuple を作成しますか?

ブーストと std::functional を使用せずにこれを実行しようとしています。私の主な問題は、実行時に引数を使用してタプルを構築する方法(すべてのプレースホルダーが正しく置き換えられた場所)と戻り値の型を推測する方法がわからないことだと思います。

STL "functional.h" で _Mu テンプレート構造を見ましたが、複雑すぎてオーバーロードされているように見えます。

4

1 に答える 1