peo*_*oro 6 c++ rationale argument-dependent-lookup
Koenig查找的基本原理是什么?
无法避免将其视为使您的代码更难以阅读且更不稳定的东西.
他们不能定义Koenig查找,以便它只适用于特定情况(即:非成员运营商)或明确要求时?
最初的动机,IIRC,是能够写的
std::cout << 42;
Run Code Online (Sandbox Code Playgroud)
无需std::operator<<(std::ostream&, int)明确限定.
如果要禁用参数相关查找,则可以明确限定函数名称,即.使用std::swap而不是swap防止swap在其参数将存在的任何命名空间中查找.
ADL也可以与SFINAE一起用于在编译时测试某个函数是否为特定类型定义(我将让你将其作为一个练习来解决,在Stackoverflow上至少有一个问题).