理解C 14 中Auto 關鍵字的變體
在C 14 中,泛型lambda,一種帶有auto 關鍵字的lambda 表達式參數類型,提供增強的靈活性。與具有非模板呼叫運算子的 C 11 lambda 相反,泛型 lambda 在其定義的閉包類型中具有模板化呼叫運算子。
例如,以下程式碼示範了泛型lambda:
在這種情況下,glambda 的閉包類型將被定義為:
這意味著glambda 是具有模板化呼叫運算子的唯一未命名仿函數的實例。 lambda 參數宣告中每次出現的 auto 都對應到一個發明的型別模板參數,允許呼叫運算子處理不同類型的參數。
C 14 標準 (n3690) 指定閉包類型的呼叫運算子對於通用 lambda,它有一個模板參數列表,其中為 lambda 參數聲明子句中的每個 auto 發明了一個類型模板參數。傳回類型和函數參數源自 lambda 的尾隨返回類型和參數宣告子句,其中 auto 被對應發明的模板參數的名稱取代。
總之,C 14 中的通用 lambda表示具有模板化呼叫運算子的唯一的、未命名的函子。這與基於 C 模板的多態性不同,在 C 模板中,編譯器會為每個參數類型產生具有替換類型的新函數。它與 Java 的泛型更加一致,涉及編譯期間的類型擦除。
以上是C 14 泛型 Lambda 如何使用「auto」關鍵字實現類型彈性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!