#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/

10-12 23:57