Argument-Dependent Lookup (ADL) หรือ Koenig Lookup เป็นกติกาการค้นหาชื่อฟังก์ชันที่ไม่ได้ระบุนamespace (unqualified) ในนิพจน์การเรียกฟังก์ชัน
รวมถึงการเรียก operator overload แบบ implicit ด้วย
ชื่อฟังก์ชันจะถูกค้นหาใน namespace ของ arguments (อาร์กิวเมนต์) เพิ่มเติมจาก scope และ namespace ปกติ ทำให้สามารถใช้ operator ที่定义在 namespace อื่นได้
ตัวอย่าง
namespace MyNamespace {
class A {};
void f(A &a, int i) {}
}
int main() {
MyNamespace::A a;
f(a, 0); // เรียก MyNamespace::f ผ่าน ADL
}
การค้นหา f ขึ้นอยู่กับ argument a ที่อยู่ใน MyNamespace กรณีเดียวกันกับ << และ >> ที่ค้นหาใน std namespace เมื่อใช้ cout, cin, endl