我有以下功能;

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");


任何人都有提示,甚至解决方案?

注意:可以在以下位置找到代码: Linkage

最佳答案

您可以返回std::function,也可以创建命名函数对象类型。

关于c++ - 确定可变C++ 11模板化lambda函数的返回类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15246843/

10-11 22:46
查看更多