问题标签 [stdmove]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

c++ - 为什么使用 std::move 并分配给 rvalue 不会窃取内部内容?

众所周知,如果与非基本类型一起使用,c++ std::move 会窃取内部内容。我突然想到如果将左值移动到右值会发生什么。我最初认为它仍然会窃取内容。但是什么也没发生,a 的字符串还在。这是由于忽略了移动构造函数引起的吗?但我认为编译器认为命名的右值是左值,对吧?

0 投票
1 回答
96 浏览

boost - 使用 std::move 作为参数传递的共享 ptr 提升 asio 帖子

我是 boost:asio 的新手。我需要将 shared_ptr 作为参数传递给处理函数。

例如

  1. boost::asio::post(std::bind(&::function_x, std::move(some_shared_ptr)));

使用 std::move(some_shared_ptr) 正确吗?或者我应该如下使用,

  1. boost::asio::post(std::bind(&::function_x, some_shared_ptr));

如果两者都是正确的,哪一个是可取的?

提前致谢

问候尚卡尔

0 投票
0 回答
65 浏览

c++ - 将旧代码转换为 std::move 语义

我想改进一些旧代码,因为它看起来很糟糕。我认为它的作用是可以完成的std::move,对吗?整个代码发布在这个GitHub 上。但是,我只需要改进那个特定的结构(Resource)。

用法是:

片段

我的尝试

0 投票
2 回答
61 浏览

c++ - 我可以在返回多个值时避免复制,同时保持我的返回类型吗?

如果我们编写如下函数:

然后NRVO应该启动,这样foo就不会在返回时被复制。

现在假设我想返回两个不同的值:

Foo这种幼稚的实现可能会触发每个和Bar( GodBolt)的两个副本的构造。

我应该如何最好地修改我的代码以避免这种复制,而不会弄乱我的返回类型?

0 投票
0 回答
45 浏览

c++ - 通过返回移动的参数而不是通过引用来更新结构

假设我们有一个结构:

我想编写一个函数来更新 的实例S,如下所示:

我通常更喜欢返回值,而不是通过引用传递参数并更改它。像这样的东西:

然后我可以像这样调用最后一个函数(以防我想要以前和更新实例的副本):

或者像这样(如果我只对保持更新的值感兴趣):

所以,我s进入update函数的参数,并在赋值(最后一行)处取回它。这合法吗?除此之外,这只是愚蠢的,我应该采用第一个解决方案吗?

0 投票
2 回答
60 浏览

c++ - 为什么在这种情况下不调用 move ctor?

其输出是(将行号添加到标准输出):

Ctor ciao
Stampa val is ciao
Val of a is ciao
Ctor test
Stampa val is test

为什么在 main 的第 2 行没有调用 mv 语义?我可能会在第四行理解有一个优化,所以只调用了构造函数,但是我无法解释第一步。有任何想法吗?

0 投票
2 回答
203 浏览

c++ - 移动后重用变量

可以进行以下操作吗?以下代码在移动后在循环(下一次迭代)中再次使用向量 v。

0 投票
1 回答
46 浏览

c++ - Move constructor for a list of Person objects

I am writing a simple code, in which I have a list of objects of class Person. The Person class

in which, the move constructor is

I also have the node structure

whose move constructor is

and finally I have the list class

whose move constructor is

My question is: inside the move constructors, is the use of std::move correct? Particularly in the first line of code of list::insert

0 投票
0 回答
35 浏览

c++ - unique_ptr 返回带有移动语义的垃圾值

我有一个通用类,它可以存储一个值和编码为字符串的值的类型。

我还有另一个实用程序函数build_int_property,它构建了一个整数属性。但不幸的是,测试失败了。谁能解释这里出了什么问题?

0 投票
2 回答
135 浏览

c++ - 为什么 std::move() 中的 static_cast 会擦除参数的值?

我的问题包含两个部分:

  1. 功能static_cast<Т>(arg)会改变内部结构arg吗?显然不是,根据这样的代码:

  2. 为什么这样的代码:

    其中std::move()仅使用 astatic_cast到 r 值:

    生成一个s1空字符串?

我猜,这是因为使用了string after的move 构造函数s2 =。它必须通过等于nullptr或 0 字符串对象中的所有数据来擦除初始字符串。虽然std::move()它本身只返回右值。这是正确的吗?

我知道我的问题是static_cast 到 r-value 引用和 std::move 在初始化中更改其参数的重复,但我还没有找到明确的解释。