Почему функция сортировки находится в глобальном пространстве имен?
Почему в глобальном пространстве имен C++существует функция сортировки? Почему этот код компилируется?
#include <iostream>
#include <vector>
int main() {
std::vector<int> array(10);
sort(array.begin(), array.end());
}
PS: clang++ -- std=c++11 --stdlib=libc++ ./тест.cpp
1 ответ:
sort
находится не в глобальном пространстве имен, а вstd
. Тем не менее, тип результатаvector::begin()
может быть также вstd
(это зависит от реализации). Если это так, тоstd::sort
находится с помощью ADL (argument-dependent lookup).Если вы не хотите, чтобы
std::sort
был найден ADL, то вы можете сделать квалифицированный вызовsort
вместо неквалифицированного:::sort(array.begin(), array.end())
.