我能用移出的物体做什么?标准是否精确地定义了在对象被移出后我可以对它做什么?我曾经认为,对一个移动对象所能做的就是销毁它,但这是不够的。例如,以函数模板为例swap如标准库中所定义的:template <typename T>void swap(T& a, T& b){
T c = std::move(a); // line 1
a = std::move(b); // line 2: assignment to moved-from object!
b = std::move(c); // line 3: assignment to moved-from object!}显然,必须可以将移出对象分配给移动对象,否则第2行和第3行将失败。那么,我还能用移动对象做什么呢?我在哪里可以在标准中找到这些细节?(顺便问一下,为什么T c = std::move(a);而不是T c(std::move(a));在第1行?)
2 回答
![?](http://img1.sycdn.imooc.com/5458506b0001de5502200220-100-100.jpg)
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
operator=
T c = std::move(a)
- 2 回答
- 0 关注
- 373 浏览
添加回答
举报
0/150
提交
取消