首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动构造函数不移动

移动构造函数不移动
EN

Stack Overflow用户
提问于 2014-03-02 11:42:34
回答 1查看 127关注 0票数 3

我在Visual 2013中编译并运行了以下代码,它打印出移动对象的内容没有改变。我知道移动的对象只能从另一个对象中销毁或分配,所以我的代码不是标准的抱怨。但不管怎样..。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <string>
#include <utility>


struct Foo
{
    std::string str;
    std::vector<int> vec;
};


int main()
{

    Foo foo = {"abc", {1, 2, 3}};

    Foo foo2( std::move(foo) );

    std::cout << foo.str.size() << '\n' << foo.vec.size() << '\n';

    return 0;
}

产出如下:

代码语言:javascript
复制
3
3

由于字符串和向量都定义了move运算符,所以我的类将合成move构造函数,该构造函数将使移动对象保持空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 11:56:23

来自http://msdn.microsoft.com/en-us/en-en/library/hh567368.aspx

"Rvalue references v3.0“添加了新规则,以便在特定条件下自动生成移动构造函数和移动赋值操作符。但是,由于时间和资源的限制,这在Visual 2013中的VisualC++中没有实现。

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

https://stackoverflow.com/questions/22127099

复制
相关文章

相似问题

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