C重载函数作为模板参数
发布时间:2020-12-16 03:04:54 所属栏目:百科 来源:网络整理
导读:我的代码的简化版本在这里 int foo(int x){ return x;}int foo(int x,int y){ return x+y;}templatetypename unary_funcint bar(int k,unary_func f){ return f(k);}int main(){ bar(3,foo); return 0;} 有没有办法告诉编译器我想通过什么,因为参数是第一个
我的代码的简化版本在这里
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);}); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |