函数模板在什么情况下不能自动推导参数
template<class T>
void print(T &p)
{
cout<<"("<<(p.first)<<","<<(p.second)<<")"<<endl;
}
例如
for_each(.begin(),.end(),print)
不能推导模板的参数,
错误1error C2896: “_Fn1 std::for_each(_InIt,_InIt,_Fn1)”: 不能将函数 模板“void print(T &)”用作函数参数
不知道为什么,请教一下
[解决办法]
for_each第三个形参是函数指针,而函数模板在实例化之前是没有函数地址的,因此不能传一个模板进去,得传print的特化。