右辺値参照は、移動セマンティクスと完全転送をサポートするために C++11 によって導入された新機能です。右辺値参照は、一時オブジェクトの存続期間を延長することができ、また、一時オブジェクトの値を変更するために使用することもできます。これらは主に、移動コンストラクターと移動代入演算子、および一時オブジェクトを引数として受け取るその他の関数を実装するために使用されます。
C++ では、式を左辺値と右辺値に分割できます。左辺値は代入式の左側に現れる式であり、永続的な状態を持ちます (変数は通常、左辺値です)。右辺値は代入式の右側にのみ現れる式ですが、通常は永続的な状態を持たないか、変数名を介してアクセスすることはできません。
右辺値参照は、2 つの連続する & 記号を使用して宣言されますint&&
。次に、右辺値参照を使用した例を示します。
int&& rv = 1; // 1是一个右值,rv是一个右值引用
関数パラメータでは、T&&
このような右辺値参照がよく見られますが、 はT
テンプレート パラメータです。このような右辺値参照は、関数テンプレート内で特別な意味を持ち、任意のタイプの左辺値および右辺値と一致できる「ユニバーサル参照」または「転送参照」を表します。たとえば、std::forward
とstd::move