调用的歧义有关问题,小弟我有点费解。大家指点一下啊多谢

调用的歧义问题,我有点费解。大家指点一下啊,谢谢

#include<algorithm>
#include<iostream>
#include<string>
#include<cstddef>
#include<iterator>
using namespace std;
template<class in ,class out,class pred >void copy_if(in begin,in end,out res,pred p)
{
while(begin!=last)
if(p(*begin)){*res++=*begin;begin++;}
}
bool less_tan10(int d){return d<10;}
int main()
{
int a[]={12,21,2,13,1,214,345,2,232,5};
const size_t SIZE=sizeof a/sizeof a[0];
copy_if(a,a+SIZE,ostream_iterator<int>(cout,"\n"),less_tan10);//这里调用处问题了,歧义问题,大家请教教我,,谢谢
}

------解决方案--------------------
和标准的重名了,改成这样。

::copy_if

或删掉 using 那句。
------解决方案--------------------
所以要养成少用或不用
using 命名空间   的习惯,这种情况下容易冲突的