首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按值C++11返回时复制ctor

按值C++11返回时复制ctor
EN

Stack Overflow用户
提问于 2013-07-26 18:20:26
回答 1查看 223关注 0票数 2

当存在移动构造函数时,c++11中的按值返回是否需要复制ctor?GCC 4.7.1抱怨说复制-ctor是隐式删除的,因为我只有一个移动构造函数,但是我认为在这种情况下它应该使用移动构造函数。

代码语言:javascript
复制
VeryLargeObject foo(...)
    {
    VeryLargeObject ret;
    //Built object
    return ret; //<Error: VeryLargeObject has deleted copy-constructor
    }

我不想添加复制构造函数,直到我真正需要它。

编辑:

抱歉我忘了移动构造器..。我只有搬家任务:-(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 21:25:08

不,在这种情况下应该只需要一个move构造函数。要么您的代码有一个bug (可能是move构造函数被抑制了,或者您实际上没有添加它),要么是GCC错误。它看起来像是根据你的帖子编辑,可能是前者。

如果试图返回本地变量以外的L值,则需要复制构造函数。在这种情况下,您可以使用move()将L值转换为R值,以使其正常工作(当然,您意识到可能会更改L值的状态)。

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

https://stackoverflow.com/questions/17888347

复制
相关文章

相似问题

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