2016-01-10 24 views
0

我正在寻找一种方法来为代表函数所需参数的std :: tuple创建一个类型表达式。考虑以下几点:为函数表示参数的元组类型表达式

template<typename F, typename ...args> 
void myfunction(F&& function, A... args) 
{ 
    std::tuple</*???*/> arguments; 
    populate_tuple(arguments,args...); 
    return apply(function,arguments); 
} 

... F是一个正常的功能类型,适用()是适用的函数的自变量的函数,populate_tuple()并在争论一些工作(包括类型转换),然后使用调用函数的最终参数填充元组。

注:我不能在元组的声明中使用args...,因为这些都是该功能期待的类型 - populate_tuple()执行转换。

感觉我好像编译器有它需要做的一切,但我不知道该语言是否支持它。有任何想法吗?所有帮助赞赏。

+1

如何变化'populate_tuple'返回你所需要的'myfunction'使用'auto',比如'自动参数= populate_tuple(参数...)的元组和;'? – NikolayKondratyev

回答

1

东西沿着这些路线,也许是:

template <typename T> struct TupleOfArguments; 

template <typename R, typename ... Args> 
struct TupleOfArguments<R(Args...)> { 
    typedef std::tuple<Args...> type; 
}; 

Demo

+0

正是我在找...谢谢! – drb

0

工作的呢?

template<typename F, typename ...Args> 
void myfunction(F&& function, Args&&... args) { 
    return apply(std::forward<F>(function), std::make_tuple(std::forward<Args>(args)...)); 
} 
相关问题