【发布时间】:2014-03-23 17:34:36
【问题描述】:
为什么在 C++ 中使用 std::swap() 我不能交换地址?
例如,使用以下
int x = 1, y = 2;
std::swap(&x, &y);
我得到编译错误:
错误:没有匹配的函数调用 'swap(int*, int*)'
但如果我执行以下操作:
int *px = &x, *py = &y;
std::swap(px, py);
它工作正常。所以有一个swap(int*, int*)!
知道第一个版本有什么问题吗? 提前致谢。
【问题讨论】:
-
临时对象不能绑定到非常量左值引用。
-
您期望发生什么?
-
交换两个临时值有什么用?
-
没有
swap(int*, int*),有swap(int*&, int*&) -
和
swap(4,5)一样——那会是什么?