Просто в некоторой части кода я создаю объект и присваиваю 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 ' В настоящее время я пытаюсь найти ошибку, когда предполагаемый объект, который был извлечен из карты, имеет некоторые полностью искаженные внутренние указатели, что могло быть следствием того, что объект был действительно удален, но этот факт был несколько упущен. Вопросы:
- Если это
n
типа unique_ptr<Node>
или unique_ptr<Node>&&
? - Каковы последствия обоих вышеперечисленных?
Отличия от предполагаемого дубликата : в этом коде здесь есть промежуточный вызов, и вопрос касается аргумента в промежуточном вызове, а не в исходящем вызове или вызове использования.