1.使用function定义一个函数模板,然后将函数模板进行赋值
function<int(int, int)> fun1 = add; //包装函数
2.构造函数模板, 将函数进行做输入进行传递
template<class T, class F> T run(T t1, T t2, F f) { return f(t1, t2); }
完整代码
#include<iostream> using namespace std; #include<functional> //函数包装器 using namespace std; int add(int a, int b) { return a + b; } template<class T, class F> T run(T t1, T t2, F f) { return f(t1, t2); } int main() { function<int(int, int)> fun1 = add; //包装函数 function<int(int, int)> fun2 = [](int a, int b)->int{return a - b;}; cout << fun1(10, 19) << endl; cout << run(10.1, 19.1, fun1) << std::endl; //默认推导,原生优先 cout << run<int>(10, 19, fun1) << std::endl; }