我正在尝试运行“Accelerated C++”(A. Koenig,B. Moo)(§8.2.2)一书中的一些示例代码:
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
template <class In, class X>
In find(In begin, In end, const X &x)
{
while (begin != end && *begin != x) {
++begin;
}
return begin;
}
int main()
{
vector<int> v;
v.push_back(5);
v.push_back(32);
v.push_back(42);
v.push_back(7);
cout << *find(v.begin(), v.end(), 42) << endl;
return 0;
}
该find
函数在书中是这样出现的;main
我自己写的函数。
clang++ 和 g++ 都不会编译这个。似乎他们在抱怨我的find
函数与std::find
. 但是,我从来using namespace::std;
没有using std::find;
在代码中使用过,所以如果包含它,编译器甚至不应该被允许使用std::find
。这里发生了什么?