为什么我可以在没有" std ::"的情况下调用max_element;没有"使用命名空间std"?

时间:2017-11-29 14:36:17

标签: c++ stl argument-dependent-lookup

请考虑以下代码:

#include <algorithm>

int main() {
        std::vector<int> v = {1,2,3};
        max_element(v.begin(), v.end());
        return 0;
}       

使用gcc 7.2.0和clang ++ 3.9.1进行编译。我希望我需要编写std::max_element,但似乎<algorithm>中至少有一些函数在全局命名空间中 - 与C ++ 17标准的草案相对立,显示生活在名称空间std。

中的函数

这里发生了什么?

0 个答案:

没有答案