C が転送参照と右辺値参照に同じ構文 (T&&) を使用するのはなぜですか?

Linda Hamilton
リリース: 2024-11-06 06:31:02
オリジナル
722 人が閲覧しました

Why Does C   Use the Same Syntax (T&&) for Forwarding References and Rvalue References?

転送と右辺値参照で共有される構文の背後にある理論的根拠

元の質問

なぜユニバーサル参照は右辺値参照と同じ構文 (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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート