![](/img/trans.png)
[英]Why std::swap does not work with std::bitset<n> content?
[英]why std::swap does not work with address operator?
为什么在无法交换地址的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 *)!
知道第一个版本有什么问题吗? 提前致谢。
std::swap
通过(lvalue)引用获取其参数。 因此,您传递的必须是左值。 此外,参数所引用的类型必须为MoveConstructible和MoveAssignable(因此,并非所有左值都必将起作用-例如,尝试交换两个字符串文字可能会失败)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.