Я хотел бы иметь функцию-член, которая принимает как левую, так и правую ссылки на некоторый класс и перемещает его объект. В настоящее время у меня есть две отдельные функции:Как принять как правую, так и левую ссылки в 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));
}
Они называются ссылками lvalue и rvalue. –
Примечание для 1-го случая вы также должны называть 'std :: move', примечание' x' является именованной переменной, таким образом, lvalue. – songyuanyao
@ user1810087 Просто примечание, теперь они теперь называются пересылкой ссылок на стандарт. – NathanOliver