2013-03-06 149 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

相關問題