up:: Cpp
source:: 右辺値参照・ムーブセマンティクス - cpprefjp C++日本語リファレンス

特殊右辺値参照。関数テンプレートの型パラメータTや型推論プレースホルダautoに&&を付けた場合。
与えられた数値が左辺値ならば左辺値参照、右辺値ならば右辺値参照になる。

しかしどちらかに定まった後、関数内で別関数にその値を使おうとすると厄介なことになる。
ダブルアンパサンドで書いたように、右辺値参照はそのまま入れると左辺値扱いになり、関数によっては使えない。再び右辺値に変換する必要がある。

そのための関数がstd::forward()std::forward<T>(a)のように型パラメータと一緒に渡すことで、別関数が左辺値参照なら左辺値、右辺値参照なら右辺値に変換して渡すことが出来る。
別名は完全転送

#include <utility>
 
template <typename T> void g(T);
 
template <typename T>
void f(T&& a)
{
  // 引数 a が左辺値参照の場合は 左辺値 に
  // 右辺値参照の場合は 右辺値 に変換してから
  // 別関数 g() の実引数として渡す。
  g( std::forward<T>(a) ) ;
  // 関数 g() は値型 T としてパラメータを取るため
  // 左辺値ではコピーが、右辺値ではムーブが行われる。
}

ちなみに完全じゃない転送はこちら。
ムーブセマンティクス