【发布时间】:2015-12-29 16:12:05
【问题描述】:
Torsten T. Will 关于 C++11 的教科书说,从 C++11 开始,如果定义了这样的非成员函数,std::swap 将使用 ADL 找到的非成员 swap,因此模式
using std::swap;
swap (obj1, obj2);
总是可以用简单的代替
std::swap (obj1, obj2);
很遗憾,我在其他任何地方都没有找到这样的声明。
真相是什么?
【问题讨论】:
-
我怀疑这是真的,因为如果那个非成员
swap是通过std::swap实现的,那么就会有无限的相互递归。或者更糟的是,swap函数不交换对象(而是碰巧做了一些完全不相关的事情,恰好被命名为swap并接受两个可变引用)。但这只是我的预感;众所周知,我有时是完全错误的。