右辺値参照は、右辺値を束縛する参照である。
&
で宣言される参照型を左辺値参照と呼ぶのに対して、&&
で宣言される参照型を右辺値参照と呼ぶ。
C++11 以前では、右辺値参照と左辺値参照を区別しなかったため、右辺値はconst左辺値参照 (const&
) に束縛するよう扱われていた。
そのため、右辺値のみに対して特別な処理を記述することができなかった。
vector<int> v, vv;
v = vv; // 代入式1
v = vector<int>(100, 0); // 代入式2