R值参考push_back函数

时间:2015-02-25 21:42:47

标签: c++11 move encapsulation rvalue-reference push-back

我正在写一个Queue类。我有两个版本的push_back用于新的C ++ 11标准。其中一个版本使用右值引用作为参数。我的版本有效,但我认为它必须缺少一些东西:

 97 template <typename T>
 98 void Queue<T>::push( T && val ) 
 99 {
100     c.push_back( val );
101 }

似乎我应该使用std :: move,但我不确定如何实现它。上面函数中的c指的是封装在我的Queue类中的deque对象。任何帮助理解我应该做些什么来适当地构建这个功能将非常感激!

1 个答案:

答案 0 :(得分:1)

是的,您需要std::move,但您也可以在此使用emplace_back

template <typename T>
void Queue<T>::push( T && val ) 
{
     c.emplace_back( std::move(val) );
}