【发布时间】:2019-08-01 16:28:58
【问题描述】:
使用这个全局命名空间 find() 模板函数:
#include <iostream>
#include <vector>
template <typename Iterator, typename T>
Iterator find(Iterator first, Iterator last, T value) {
while(first!=last && *first!=value)
++first;
return first;
}
int main(int argc, const char * argv[]) {
std::vector<int> v = {1,3,5,7};
std::vector<int>::iterator pos = find(begin(v), end(v), 3);
if (pos != end(v))
std::cout << "Found\n";
return 0;
}
为什么,编译器(clang)失败,提示有两个候选模板函数:我的 find() 和标准的 std::find()?
【问题讨论】:
-
是的,同样的原因
begin(v)工作而不是std::begin(v)。检查副本。
标签: c++