首頁 >後端開發 >C++ >C 14 泛型 Lambda 如何使用「auto」關鍵字實現類型彈性?

C 14 泛型 Lambda 如何使用「auto」關鍵字實現類型彈性?

Patricia Arquette
Patricia Arquette原創
2024-12-16 16:36:17833瀏覽

How Do C  14 Generic Lambdas Achieve Type Flexibility Using the `auto` Keyword?

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

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