无法避免将其视为使您的代码更难以阅读且更不稳定的东西.
他们不能定义Koenig查找,以便它只适用于特定情况(即:非成员操作符)或明确要求时?
std::cout << 42;
无需明确限定std :: operator<<(std :: ostream&,int). 如果要禁用参数相关查找,则可以明确限定函数名称,即.使用std :: swap而不是swap来防止在其参数生存的任何命名空间中查找swap. ADL也可以与SFINAE一起用于在编译时测试某个函数是否为特定类型定义(我将让你将其作为一个练习来解决,在Stackoverflow上至少有一个问题).