为什么C ++中的全局命名空间中有一个sort函数?为什么这段代码会编译?
#include <iostream>
#include <vector>
int main() {
std::vector<int> array(10);
sort(array.begin(), array.end());
}
PS:clang ++ --std = c ++ 11 --stdlib = libc ++ ./test.cpp
答案 0 :(得分:7)
sort
不在全局命名空间中,而是在std
中。但是,vector::begin()
的结果类型可能也在std
中(这取决于实现)。如果是,则ADL(参数依赖查找)找到std::sort
。
如果您不希望ADL找到std::sort
,那么您可以打电话给sort
而不是不合格的::sort(array.begin(), array.end())
。