C 允許編譯器從函數參數推斷模板參數,從而實現簡潔且類型安全的程式碼。但是,此功能不適用於類別建構函式。為什麼會出現這種情況?
在範例程式碼中,編譯器無法推斷 Variable 的範本參數,因為建構函式不是該類別的唯一入口點。複製建構子和賦值運算子提供了創建和修改物件的替代方法。
考慮以下場景:
在這種情況下,編譯器將不知道需要什麼模板類型我的班級下午。雖然可以從傳遞給建構函數的參數推斷類型,但當涉及賦值時,它會變得不確定,很難確定預期類型。
此外,可能存在不希望進行類型推論的情況。例如,一個類別可能具有出於不同目的接受不同類型的建構函數。推斷模板類型可能會對類別介面施加意想不到的約束。
值得注意的是,C 17 預計會從建構函數參數引入型別推導。這將啟用以下語法:
但是,重要的是要記住類型推斷是一個方便的功能,並且可能並不總是合適。了解其限制背後的原因有助於開發人員編寫健全且可維護的 C 程式碼。
以上是為什麼 C 模板參數推斷不能與建構函數一起使用(直到 C 17)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!