跳转至

参数依赖查找

英文: Argument-Dependent Lookup, ADL.
别名: Koenig Lookup.

std::cout << 1; // 等价于 std::operator<<(std::cout, 1)

在使用重载的运算符时不方便指定命名空间, 因此需要一个方法来确保命名空间中运算符重载能被正常使用.
上方代码中该运算符重载位于命名空间 std 中, 因此正常情况下无法匹配到正确的函数.
通过 ADL, 可以根据第一个参数 std::cout 推断出命名空间为 std, 从而匹配到正确的函数.

最开始 ADL 只适用于重载的运算符, 但后来由于觉得在普通函数上也适用, 便被拓展到了全体函数.

参见

参考

评论