繁体   English   中英

以参数作为模板参数的模板化函数指针

[英]Templated function pointer with arguments as template parameter

我无法编译我的代码。 我希望能够声明一个将另一个函数(或定义了operator()的类或lambda表达式)作为参数的函数,并且该函数也具有模板参数。 这是我想做的一个例子:

template <class T, T F> 
T execF(T a, T b) 
{ 
    return F(a, b); 
}

template <class T>
T add(T a, T b) 
{ 
    return a + b;
}

int main()
{ 
    std::cout << execF<int, add>(3,4) << std::endl;
}

是否可以在C ++ 14中执行类似的操作?

它应该是:

template <class T, T F(T, T)>
T execF(T a, T b)
{
    return F(a, b);
}

如果要忽略所有模板参数,建议您坚持使用Some Programmer Dude的注释,并接受该函数作为函数参数:

template <typename T>
T execF(T a, T b, T f(T, T))
{
    return f(a, b);
}

template <typename T>
T add(T a, T b) { return a + b; }

int main(int , char **)
{
    auto x = execF(41.8f, 0.2f, add); //all params deduced in both functions
    std::cout << x << std::endl;

    x = execF(27, 15, add); //idem
    std::cout << x << std::endl;

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM