首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理移出的对象?

如何处理移出的对象?
EN

Stack Overflow用户
提问于 2011-08-11 22:19:13
回答 1查看 18.6K关注 0票数 151

该标准是否准确地定义了一旦对象被移出,我可以对其执行的操作?我曾经认为,对于一个移出的对象,你所能做的就是销毁它,但这是不够的。

例如,以标准库中定义的函数模板swap为例:

代码语言:javascript
复制
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行将失败。那么,我还能用moved-from对象做什么呢?我可以在标准中的哪里找到这些详细信息?

(顺便问一下,为什么在第一行中是T c = std::move(a);而不是T c(std::move(a));?)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7027523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档