首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数模板在什么情况下不能自动推导参数,该如何解决

2013-04-09 
函数模板在什么情况下不能自动推导参数templateclass Tvoid print(T &p){cout((p.first),(p

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

热点排行