【问题标题】:How to pass template function to another function如何将模板函数传递给另一个函数
【发布时间】:2013-10-24 09:29:50
【问题描述】:

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

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

【问题讨论】:

    标签: c++ templates c++11 variadic


    【解决方案1】:

    我假设你想要那个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2011-10-31
      • 2019-07-25
      相关资源
      最近更新 更多