函数模板可以给同型函数的实现带来便利性,一个简单的例子如下:
template<typename T>
void test2078(T x, T y)
{
cout << x + y << endl;
}
int main()
{
test2078<int>(1,2); //此处的<int>也可以省略,会自动进行类型推导
test2078(1.2, 2.3);
return 0;
}
函数模板还可以结合一些稍微复杂的语法结构配合使用,如下所示:
template<typename T>
void test20781(std::string& str, std::function<void(T& x)> func)
{
T i;
i = std::stoi(str);
func(i);
}
class Test2078
{
public:
template<typename T>
void test2078_bind(std::function<void(T&)> func)
{
bind_func = std::bind(test20781<T>, _1, func);
}
std::function<void(std::string&)> bind_func;
};
int main()
{
Test2078 t;
t.test2078_bind<int>([](int& x) {//lambda表达式
cout << "test_bind:" << x;
});
string str = "123";
t.bind_func(str);
return 0;
}