2013-10-24 242 views
0

我有下面的模板函数,现在我想添加一个函数testfun,其参数将是每个模板函数及其参数。但我不知道如何定义和实施testfun。任何意见表示赞赏。谢谢!如何将模板函数传递给另一个函数

template<typename T> 
T hoo(T x) 
{ 
    return x; 
} 

template<typename T, typename... Args> 
T hoo(T first, Args... rest) 
{ 
    return first + hoo(rest...); 
} 

int a = 1, b = 2, c = 3; 
int tsum = hoo<int>(a, b); 
std::cout << tsum << std::endl; 

std::string sa = "a", sb = "b"; 
std::string tssum = hoo<std::string>(sa, sb); 
std::cout << tssum << std::endl; 

testfun(hoo, a, b);  //testfun looks like this 
testfun(hoo, sa, sb);  //testfun looks like this 
//[Update] Add more request 
testfun(hoo, a, b, c);  //testfun also support this 

回答

0

我想你想的是:

template <typename T, typename... Args> 
T testfun(T (&f) (T, Args...), T tail, Args... queue) 
{ 
    return f(tail, queue...); // or any other implementation 
} 
相关问题