【发布时间】:2018-03-28 16:10:03
【问题描述】:
这是出现在“C++ Primer”第 5 节第 13.3 节中的相关代码:
void swap(Foo &lhs, Foo &rhs)
{
using std::swap;
swap(lhs.h, rhs.h); // uses the HasPtr version of swap
// swap other members of type Foo
}
书中提到了特定于类的交换没有被 using 声明隐藏的现象,并请读者参考 §18.2.3:
我阅读了该部分并意识到这可能与依赖于参数的查找 (ADL) 有关。以下为节选:
但是我的理解还是有些模糊。我的问题是:ADL 是在正常范围查找之前进行还是在正常范围查找之后进行?我目前的理解是 ADL 在正常范围查找之前进行,否则它应该是使用的 std::swap 。如果您认为我是对的,我需要确认,或者如果您认为我错了,请指出我犯了什么错误。谢谢。
【问题讨论】:
标签: c++ scope namespaces argument-dependent-lookup using-declaration