Как я должен передать unique_ptr через 2 вызова функции с семантикой перемещения? - PullRequest
0 голосов
/ 30 апреля 2020

Просто в некоторой части кода я создаю объект и присваиваю unique_ptr:

unique_ptr<Node> n ( CreateNode() );
container.place(id, std::move(n));

Определение place:

void place(int id, unique_ptr<Node> n)
{
    mappings_[id] = std::move(n);  // std::map<int, unique_ptr<Node>> mappings_;
}

I ' В настоящее время я пытаюсь найти ошибку, когда предполагаемый объект, который был извлечен из карты, имеет некоторые полностью искаженные внутренние указатели, что могло быть следствием того, что объект был действительно удален, но этот факт был несколько упущен. Вопросы:

  1. Если это n типа unique_ptr<Node> или unique_ptr<Node>&&?
  2. Каковы последствия обоих вышеперечисленных?

Отличия от предполагаемого дубликата : в этом коде здесь есть промежуточный вызов, и вопрос касается аргумента в промежуточном вызове, а не в исходящем вызове или вызове использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...