T&& が右辺値参照のように動作しないのはなぜですか?
void f(T&&) や void f(T& などの関数オーバーロードを扱う場合)、その逆は当てはまらないにもかかわらず、T&& を渡すときに f(T&) が呼び出されることは驚くべきことです。これは、C の右辺値参照の動作によるものです。
直観に反して、T&& は単なる右辺値参照ではありません。これは右辺値参照です。つまり、右辺値にバインドすることしかできませんが、それ以外の場合は右辺値参照型の左辺値のように動作します。このバインド動作により、名前のないオブジェクトや名前を失いそうなオブジェクトが自動的に右辺値として扱われるようになります。
ただし、T&& には名前 (つまり t) があるため、左辺値とみなされ、 f( T&) 過負荷です。 f(static_cast 要約すると、この動作を管理する C のルールは次のとおりです。
以上が「T&&」が常に真の右辺値参照のように動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。