为什么在全局命名空间中有一个sort函数?

时间:2013-11-03 13:59:04

标签: c++ c++-standard-library

为什么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

1 个答案:

答案 0 :(得分:7)

sort不在全局命名空间中,而是在std中。但是,vector::begin() 的结果类型可能也在std中(这取决于实现)。如果是,则ADL(参数依赖查找)找到std::sort

如果您不希望ADL找到std::sort,那么您可以打电话给sort而不是不合格的::sort(array.begin(), array.end())