Suk*_*lay 3 c++ c++-standard-library
为什么C++中的全局命名空间中有一个sort函数?为什么这段代码会编译?
#include <iostream>
#include <vector>
int main() {
std::vector<int> array(10);
sort(array.begin(), array.end());
}
Run Code Online (Sandbox Code Playgroud)
PS:clang ++ --std = c ++ 11 --stdlib = libc ++ ./test.cpp
sort它不在全局命名空间中,而是在std.但是,结果类型vector::begin() 也可能是std(这取决于实现).如果std::sort是,则由ADL(参数依赖查找)找到.
如果您不想std::sort被ADL找到,那么您可以拨打合格的电话sort而不是不合格的电话:::sort(array.begin(), array.end()).