<分区>
Possible Duplicate:
What can I do with a moved-from object?
例如,参见 this code :
template<class T>
void swap(T& a, T& b)
{
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
}
这只是我的问题,还是这里有错误?如果你move
a
到tmp
,那么a
不就失效了吗?
即从 b
到 a
的 move 赋值不应该是一个 move 构造函数调用,而不是放置 new
吗?
如果不是,那么 move 构造函数和 move 赋值运算符有什么区别?
template<class T>
void swap(T& a, T& b)
{
T tmp(std::move(a));
new(&a) T(std::move(b));
new(&b) T(std::move(tmp));
}