C++ vector 实现 - move 构造函数 - move 与前进

标签 c++ c++11 move forward rvalue-reference

在 MSVC2010 下,vector 类的 move 构造函数定义如下:

vector(_Myt&& _Right)
    : _Mybase(_Right._Alval)
    {   // construct by moving _Right
    _Assign_rv(_STD forward<_Myt>(_Right));
    }

因为还有一个复制构造函数的定义,我想我们永远不会调用 vector(_Myt&& _Right) 并将左值引用作为参数。

所以我想知道是否在这里,这一行:

_Assign_rv(_STD forward<_Myt>(_Right));

可以替换为:

_Assign_rv(_STD move<_Myt>(_Right));

没有副作用

最佳答案

是的,对于没有引用限定符的类型 T , 两者 std::forward<T>std::forward<T&&>只是花哨的说法std::move .

关于C++ vector 实现 - move 构造函数 - move 与前进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814042/

相关文章:

c++ - std::basic_string 每次都会破坏空终止吗?

c++ - 标准容器交换重载

C++ 为谓词和值重载 std::count_if()

javascript - 使用 JS/jQuery move div 的最流畅方式

c++ - 计算 Action 会导致海森堡效应吗?

javascript - 向下和向上滚动时用 float block

c++ - c++如何通过特定的n个字符从txt文件中读取值

c++ - 模板类中的枚举

c++ - 如何声明两个将彼此的签名作为参数的函数?

c++ - openCV 创建不同大小的 3D 矩阵