为什么这个交换函数调用不明确?

时间:2013-12-12 21:04:46

标签: c++ templates stl

我想使用模板交换两个数字,但为什么交换(x,y);把错误称为模棱两可的电话。

#include <iostream>
using namespace std;

template <class T>

void swap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}

int main () {
    int x = 14;
    int y = 7;
    swap(x, y);
    cout << x << y;
}

1 个答案:

答案 0 :(得分:6)

#include <iostream>
using namespace std;

iostream必须包含algorithm,并且由于您决定在文件中包含整个std命名空间,因此您与std::swap发生冲突。删除using namespace std;

编辑:正如@chris在评论中指出的那样,std::swap已在C ++ 11中移至<utility>