#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string str1 = "good", str2 = "luck";
swap(str1,str2); /*Line A*/
int x = 5, y= 3;
swap(x,y); /*Line B*/
}
如果我评论 B 行代码编译(http://www.ideone.com/hbHwf)而评论 A 行代码编译失败(http://www.ideone.com/odHka),我得到以下错误:
error: ‘swap’ was not declared in this scope
为什么在第一种情况下我没有收到任何错误?
最佳答案
swap(str1, str2)
因为 Argument dependent lookup 而工作
P.S: Pitfalls of ADL
关于c++ - 交换在 int 的情况下失败,在 string 的情况下工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6204632/