Передача только перемещаемых объектов в качестве эталонных параметров r-значения по сравнению с безреферентными параметрами - в чем разница? - PullRequest
1 голос
/ 28 февраля 2020

Объекты только для перемещения могут передаваться в функции в качестве опорных параметров r-значения и в качестве обычных параметров без опорных значений В чем разница между этими двумя случаями?

См. NoRValueReference и rValueReference в следующем примере:

struct MoveOnly {
  MoveOnly() = default;
  MoveOnly(MoveOnly&&) = default;
  MoveOnly& operator=(MoveOnly&&) = default;
  MoveOnly(const MoveOnly&) = delete;
  MoveOnly& operator=(const MoveOnly&) = delete;
};

void noRValueReference(MoveOnly val) {}
void rValueReference(MoveOnly&& val) {}

int main() {
    MoveOnly a, b;
    noRValueReference(std::move(a));
    rValueReference(std::move(b));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...