c++ - 为什么没有 std::move 就不会调用 move 构造函数?

标签 c++ c++11 move-semantics

我有这个代码:

SomeType::SomeType(std::vector<Item>&& container, const float someOtherPArameter)
    : internal_container(std::move(container))
{
    // some code here
}

有人可以向我解释为什么 move 构造函数不会在没有“std::move”的情况下调用“internal_container”吗?

最佳答案

每当从相同类型的 xvalue 初始化对象时,都会调用 move 构造函数。您可以通过调用 std::move(x) 创建该 xvalue。将参数声明为右值引用不会自动使其成为xvalue

关于c++ - 为什么没有 std::move 就不会调用 move 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269345/

相关文章:

c++ - move 语义和引用语义

c++ - 无法将 qmake 文件添加到 Qt 版本 [armhf]

c++ - 模板类根据其他类的存在和优先级以及更多类型限制(如 const 和区分大小写)调用其他类的某些函数

c++ - 如何在 C++ 中查找大数模 1000000007 的阶乘?

c++ - 正在分配指针的测试类析构函数?

c++ - vector push_back a moved local var in c++11 测试和混淆

c++ - 为 QWidget 派生 move 赋值运算符?

c++ - 调整大小后指向元素值的 unordered_map 指针是否有效?

c++ - 是否允许在 constexpr 函数中进行函数指针比较?

windows - 您需要安装什么才能在 Windows 上使用 Clang 为 64 位构建 c++14?