一.函数包装器
#include<iostream>
#include<functional>
template<typename T,typename F>
T run(T v, F f)//数据类型,函数
{
static int count = 0;//限定同一个函数的调用次数
count++;
std::cout << "执行" << count << std::endl;
if (count > 1)
{
T vx(0);
return vx;
}
return f(v);
}
template<typename T, typename F>
T run(T v1,T v2, F f)//数据类型,函数
{
/*static int count=0;
count++;
std::cout << "执行" << count << std::endl;
if (count > 1)
{
T vx(0);
return vx;
}*/
return f(v1,v2);
}
//定义外部函数
int print(int num)
{
return num;
}
//函数包装器
void main()
{
double db = 10.9;
std::function<double(double)> fun1 = [](double u) {return u * 2;};//函数指针
std::cout << run(db, fun1) << std::endl;
std::cout << run(db, fun1) << std::endl;
int num1 = 10, num2 = 20;
std::cout << run(num1, print) << s