vector<int> v1, v2;
/*1*/ vector<int> &someReference=v1; //compiles
/*2*/ someReference=v2; //compiles
vector<unique_ptr<int>> vec1, vec2;
/*3*/ vector<unique_ptr<int>> &otherReference=vec1; //compiles
/*4*/ otherReference=vec2; //ERROR
Я бы понял, если ни одна строка 3, ни 4 не скомпилировались, но третий не вызывает ошибок компиляции - по-видимому, нет проблем с инициализацией ссылки в первый раз и ее передачей; проблема возникает, когда я пытаюсь назначить ее во второй раз.Почему обращение к unique_ptr ведет себя так?
Я не могу понять, что происходит за кулисами, что делает невозможным второе назначение.
google «семантика перемещения» –