なぜユニバーサル参照は右辺値参照と同じ構文 (T&&) を共有するのですか?混乱しませんか?
普遍参照 (T&&) は、T を「オブジェクト型」または「参照型」として推定できます。右辺値が渡されると、T は int に推定され、int&& パラメーターが生成されます。左辺値が渡されると、T は int& に推定され、参照折りたたみルールにより int& に折りたたみます。
T が推定できない場合 (X::baz の例など)、それは普遍的な参照ではありません。
ユニバーサル参照と右辺値参照に同じ構文を使用すると、テンプレート引数の推論と参照の折りたたみルールが合理化されます。提案された調整により、テンプレート パラメーターを参照型として推定できるようになり、転送の問題に対処できます。
T&&&&&、T@、または T&42 などの代替構文が検討されましたが、却下されました。宣言子 T&&&@ は実際の型を表すことができないため、混乱が生じる可能性があります (常に int&& または int& を参照します)。
現在の構文は、より広範な型システムに準拠しています。T が左辺値参照の場合、 T&&もです。ルールには一貫性があり、不必要な複雑さを回避します。
以上がC が転送参照と右辺値参照に同じ構文 (T&&) を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。