前端之家收集整理的这篇文章主要介绍了
C重载函数作为模板参数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的
代码的简化版本在这里
int foo(int x)
{
return x;
}
int foo(int x,int y)
{
return x+y;
}
template<typename unary_func>
int bar(int k,unary_func f)
{
return f(k);
}
int main()
{
bar(3,foo);
return 0;
}
有没有办法告诉编译器我想通过什么,因为参数是第一个“foo”?
你可以给出一个明确的模板参数:
bar<int(int)>(3,foo);
或者将不明确的函数名称转换为可以推导出模板参数的类型:
bar(3,static_cast<int(*)(int)>(foo));
或将其包装在另一个函数(或函数对象)中以消除歧义
bar(3,[](int x){return foo(x);});
原文链接:https://www.f2er.com/c/112640.html