[问题] ambiguous call to overloaded function

楼主: QQ29 (我爱阿蓉)   2014-09-18 12:21:29
遇到一个compile error
但我看不出来错的原因是什么
我写一个partition function例如
template<typename Iterator, class Predicate>
Iterator partition(Iterator begin, Iterator end, Predicate pred)
{
return begin;
}
然后
#include <algorithm>
int main()
{
std::vector<int> vec;
partition(vec.begin(), vec.end(), [](int i){return true; });
}
compile error 就说 partition 这function ambiguous了
不解的是
algorithm里面的partition包在namespace std底下 跟我这有啥关系
我也确定我没自己写using namespace std;
而若我改成::partition(....); 就没问题了
或是拔掉algorithm 也可以compile 过, 但我会用到algorithm的其他method 所以不能拔
我是用VC
而我请朋友在GCC验证 也说会error
请教各位
谢谢
作者: azureblaze (AzureBlaze)   2014-09-18 12:30:00
Argument-dependent name lookup因为你的参数iterator是在std下的东西所以他会自动去搜std里的名称
作者: carylorrk (carylorrk)   2014-09-18 15:42:00
可以参考 the complete guide 9.2

Links booklink

Contact Us: admin [ a t ] ucptt.com