可以从r值引用移动到临时的子对象吗
Is it OK to move from r-value reference to sub-object of temporary?
如果将临时Derived
传递给接受Base&&
的方法,是否可以从中移动构造Base?
临时生命周期会延长到函数结束(或参数的生命周期),因此您可以从该引用中移动构造Base
对象。
请注意,您需要一个额外的std::move
才能使其移动而不是复制:
Base b = std::move(param);
从中移动的临时对象将处于为其类型的移动对象指定的任何状态。像vector<int>
或string
这样的标准库类型有一个所谓的"有效但未指定的状态"——基本上,你能做的唯一合理的操作就是赋值(即复制或移动到其中)或销毁它。如果没有关于Base
移动构造函数定义的信息,就无法做出进一步的假设。
相关文章:
- 将对象移动到std::shared_ptr
- std::使用内部对象移动 - 与调用不匹配
- 基于范围的 for 循环将对象移动到另一个容器中?
- 将列表的对象C++移动到另一个对象
- 从移出对象移动
- C++如何将对象移动到 nullptr
- Qt 通过将对象移动到线程来跨线程发出信号
- 如何将对象移动到std::async()
- 2D 阵列/网格中的对象移动
- 无法将套接字对象移动到std::vector中
- 在将对象移动到另一个线程后,不能简单地删除该对象
- 如何将相互依赖的对象移动到一起并维护内部引用
- 在OpenGL中将2D对象移动到一个点
- 如何将对象移动到未初始化的内存中
- 复制构造函数并通过跟踪对象移动语义
- SFML -将对象移动到coord
- 在堆栈程序中实现一个计数器,用于计算对象移动的次数
- Std::将Std::unique_ptr对象移动到STL容器中.(MSVC编译器问题)
- 将临时对象移动到矢量中
- 将c++对象移动到内存位置