IT-словарь › Программирование › ADL

ADL

Программирование Svenska → Обновлено: 2026-10-17

Правило C++: при неквалифицированном вызове функции компилятор ищет её ещё и в пространствах имён типов аргументов. Также известно как поиск Кёнига.

Именно благодаря ему работает std::cout << x, без указания, какой именно operator<< имеется в виду, и это не курьёз, а несущая конструкция. Без него перегрузка операторов между пространствами имён была бы непригодна. На нём же держится идиома using std::swap; swap(a, b);, которая предпочитает собственную версию типа и откатывается к стандартной, — устоявшийся способ задавать точки кастомизации в обобщённом коде. Обратная сторона: он может подтянуть перегрузки из пространств имён, о которых вы не думали, и породить неоднозначности, всплывающие лишь тогда, когда кто-то подключит внешне не связанный заголовок. Поэтому ranges в C++20 используют объекты точек кастомизации, намеренно блокирующие ADL.

← Назад к словарю