2013-03-06 165 views
0

我有以下功能;确定可变参数C++的返回类型11模板拉姆达函数

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; 
       } 

那我似乎无法找到一个可行的返回类型,或者方法来调用,我希望能够都这样称呼它;给定'f','arg'和'param'为;如果'f','arg'和'param'为'0',则为'0'。

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

+0

问题:你知道“参数”和“参数”之间的区别吗? – Xeo 2013-03-06 12:37:34

+0

@Xeo:我知道命名不好,是的,一旦系统正常工作,它可能会改变。 – Skeen 2013-03-06 12:38:28

+0

这不仅仅是关于命名是“坏” - 如果你不知道它们代表什么,你希望如何正确地实现这样的东西?有了“参数”和“参数”的正确定义,这段代码并没有太多意义(阅读:无)。 – Xeo 2013-03-06 12:40:20

回答

5

您可以返回std::function或创建一个命名的函数对象类型。

+0

我试图使用std ::函数,没有任何运气,我宁愿不依赖库(甚至不是标准的) – Skeen 2013-03-06 12:07:53

+4

然后你的问题太局限了。 – 2013-03-06 12:13:13

+1

Closevote大炮...火!现在真的,不使用标准库的原因是什么? – 2013-03-06 12:13:32

相关问题