3

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

无副作用

4

1 回答 1

4

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

于 2012-05-30T10:03:47.990 回答