首頁  >  文章  >  後端開發  >  為什麼 C 對轉送引用和右值引用使用相同的語法 (T&&)?

為什麼 C 對轉送引用和右值引用使用相同的語法 (T&&)?

Linda Hamilton
Linda Hamilton原創
2024-11-06 06:31:02614瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn