為什麼通用引用與右值引用共享相同的語法(T&& ) ?這不是很混亂嗎?
通用引用(T&&)可以將 T 推導為「物件類型」或「引用型別」。當傳遞右值時,T 推導為 int,從而產生 int&& 參數。當傳遞左值時,T 推導為 int&,由於引用折疊規則而折疊為 int&。
當 T 無法推導時(例如,在 X::baz 範例中),它不是通用引用。
對通用引用和右值引用使用相同的語法可以簡化模板參數推導和引用折疊規則。提議的調整允許將模板參數推導為引用類型,從而解決轉發問題。
替代語法,例如 T&&&&&、T@ 或 T&42,已被考慮但被拒絕。它們會帶來混亂,因為聲明符 T&&&@ 無法表示實際類型(它總是引用 int&& 或 int&)。
當前語法與更廣泛的類型系統一致:當 T 是左值引用時, T&&也是。規則一致,避免不必要的複雜性。
以上是為什麼 C 對轉送引用和右值引用使用相同的語法 (T&&)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!