2016-01-10 25 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)...)); 
} 
相關問題