c ++ vector implementation - 移动构造函数 - move vs forward

时间:2012-05-30 10:00:08

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

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

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));

没有副作用

1 个答案:

答案 0 :(得分:4)

是的,对于没有引用限定符T的类型,std::forward<T>std::forward<T&&>只是说std::move的奇特方式。