问题标签 [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 投票
2 回答
105 浏览

c++ - 向量和 push_back()

简单的例子,但是我不明白我做错了什么,结果我得到了比我预期的2个额外的析构函数(预期2)。有人可以解释一下吗?

结果:

0 投票
1 回答
49 浏览

c++ - 何时复制函数参数?

我很想知道何时复制函数的参数。

该函数是否从一开始就复制其参数?如果不是,我们如何知道参数何时被复制?从上面的代码中,我假设参数没有被复制,因为 std::move 仍然影响变量 x。

0 投票
1 回答
81 浏览

c++ - 作为函数参数的正确值,正确用法?

尝试更多地使用 rightvalues 但我很困惑,我应该如何设计我想要使用正确值的函数:

这两个函数调用之间的有效区别是什么?当我用双&符号传递它使用时会发生什么std::move

0 投票
1 回答
149 浏览

c++ - 在 C++ 中使用移动语义传递 unique_ptr 的向量

我正在学习 CPP++14 移动语义。在编写小代码时,我观察到一些奇怪的行为。我正在使用 r 值引用将唯一 ptr 的向量移动到函数中。在调试时,我发现更改也应用于移动的对象。为什么即使物体被移动,我也会观察到这种情况?以下代码中的移动有什么作用?

0 投票
1 回答
105 浏览

c++ - C++20 std::move 中的自赋值

大多数答案,包括这个答案,都指出这std::move并不意味着用于自我分配。
但是,我确实通过 self move assignment在官方参考中看到了可能的实现:accumulate

仅从 C++20 开始才安全吗?内部发生了什么?
EXP63 -CPP声明:

应该假设唯一可以对移出的对象实例安全执行的操作是通过分配给对象重新初始化或通过调用其析构函数来终止对象的生命周期

看起来重新初始化是完全合法的。

0 投票
1 回答
44 浏览

c++ - 传递 unique_ptr 时调试和发布配置的移动不一致?

所以我得到了一些使用 SFML 库处理一些简单 tcp 套接字的代码。因此,在使用 SFML 功能的情况下创建了一个套接字,并从函数作为右值引用返回。然后,一个组织函数传递这个套接字(目前只被存储)并向它的调用者发送一个套接字是否被处理的信号。然而,这并没有按预期工作。

前面使用的类TcpListener在组合中封装了一个 sf::TcpListener 并简单地转发它的使用。

我有一个简单的测试,尝试连接。

此测试在我正在编译的两种配置中失败的方式不同。在 debug ( g++ -g3) 中,测试意外失败。

调试和输出显示,第一个返回nonBlockingNext(),即返回监听器接受的套接字的那个,已经到达,但在随后的外部函数中processNextIncoming的值new_socket不是 set/is nullptr

在 Release 中,g++ -O3输出显示有希望,但测试本身因段错误而崩溃,似乎在 test-teardown 中,可能是在释放套接字时,我通过进一步的输出确定了这一点,因为在优化代码中进行调试并不是很有成果。

在 -g3 编译中调试时,我进一步注意到,new_socket在返回之前似乎再次达到了“nonBlockingNext()”中的构造:

一个步骤,很可能在发布配置中被优化掉,或者可能只是 gdb 很奇怪。

出了什么问题?我该如何继续并让它发挥作用?我在右值和移动方面犯了任何错误吗?

0 投票
0 回答
47 浏览

c++ - 完美的转发和移动

我有一个程序,我有一个包含 2 个数据成员的结构

我必须将它们添加到我有许多复制操作的 unordered_map 中。现在我正在寻找完美的转发和移动,我应该学习这些来摆脱int32_t和uint64_t的复制操作吗?这会影响程序的速度吗(我没有任何指针)?这是我添加到进行大量复制操作的无序地图的方法:

我会读取很多数据,所以我需要编写一个高效的(就速度而言)程序。如果您有任何建议,我可以详细搜索以提高速度,我将不胜感激。(我也为无序地图使用储备)

0 投票
0 回答
92 浏览

c++ - 如果我传递一个右值,为什么在 std::move 中需要 static_cast 和 std::remove_reference?

我试图了解更多的移动语义。现在这是一个可能的实现std::move

  • 但我对其进行了一些编辑以了解其工作原理:

但是为什么我不能直接返回实例化后obj的哪个呢?rvalue-reference type

0 投票
1 回答
33 浏览

c++ - 将具有移动 c-tor 的局部变量移动到具有参数的函数中

试图清除我对何时发生移动的理解,以及何时编写通过值而不是引用传递值的函数以从移动中获益。

在这种情况下 localStr 会被移到 foo1 中吗?

如果要添加更多级别的函数调用:

会不会有两个动作?

0 投票
1 回答
101 浏览

c++ - 移动语义及其工作原理?

是否有用于 move 而不是 的语言语法std::move()?以及如何std::move()工作?

在五规则中,我必须定义移动构造函数。

代码使用std::move()