私はいくつかのクラスへの左と右の両方の参照を受け入れ、それをオブジェクトとして移動するメンバ関数を持っていたいと思います。現在、私は2つの別々の機能を持っている:C++で左右参照の両方を受け入れる方法は?
void ThrSafeQueue::push(Obj&& x) {
lock_guard(mutex_);
queue_.push(x);
}
void ThrSafeQueue::push(Obj& x) {
lock_guard(mutex_);
queue_.push(std::move(x));
}
左辺値と右辺値参照と呼ばれます。 –
第1のケースでは、 'std :: move'も呼び出すべきです。メモでは、' x'は名前付き変数、したがって左辺値です。 – songyuanyao
@ user1810087ちょうどメモ、彼らは今標準の転送参照と呼ばれています。 – NathanOliver