读书人

函数模板在什么情况下不能自动推导参数

发布时间: 2013-04-09 16:45:09 作者: rapoo

函数模板在什么情况下不能自动推导参数
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的特化。

读书人网 >C++

热点推荐