0

私は次の機能を持っています。

template<typename T, typename U, typename... Parameters>
void transform(void (*func)(Parameters...))
               {
                  auto lambda_function = [func](T args, U params)
                  {
                     auto combined = std::tuple_cat(args, params);
                     helper(func, combined);
                  };
                  return lambda_function;
               }

実行可能なリターンタイプ、または呼び出す方法が見つからないように思われるので、これと同じように呼び出すことができるようにしたいと思います。

auto func = transform<std::tuple<char,int>, std::tuple<const char*>>(f);
func(arg, param);

'f'、'arg'、および'param'を;として指定します。

void f(char arg1, int arg2, const char* arg3);
std::tuple<char,int> arg = std::tuple<char,int>('C',-3);
std::tuple<const char*> param = std::tuple<const char*>("PO");

誰かがヒント、あるいは解決策を手に入れましたか?

注:コードは次の場所にあります。リンケージ

4

1 に答える 1

5

を返すかstd::function、名前付き関数をオブジェクト型にすることができます。

于 2013-03-06T12:02:25.350 に答える