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行目もコンパイルされなかった場合は理解できますが、3行目はコンパイルエラーを引き起こしません-参照を初めて初期化して渡すことに問題はないようです。問題は、2 回目に割り当てようとしたときにのみ表示されます。
2番目の割り当てを不可能にする舞台裏で何が起こっているのか理解できません。