C 11 中帶有「auto」的Lambda 表達式類型推導
在C 11 中,lambda 是強大的功能,允許程式設計師定義匿名功能。透過使用「auto」關鍵字推導 lambda 的類型,會產生一個常見的誤解,認為 lambda 是函數指標類型。
Lamda 的本質
但是,這個假設是不正確的。 lambda 表達式的基礎類型未明確定義。相反,lambda 通常是函子的語法糖。 lambda 直接轉換為函子對象,其中 [] 括號內的元素成為建構函數參數和對象成員,而 () 括號內的參數成為函子運算子 () 的參數。
Lambda轉換為函數指標
不捕獲任何變數的 Lambda 確實可以轉換為函數指標。標準支援此轉換,但並非所有編譯器(例如 MSVC2010)都支援。然而,這種轉換並不意味著 lambda 的實際類型是函數指標。
結論
用「auto」推導的 lambda 表達式的型別是未指定的函子型態。雖然不捕獲任何變數的 lambda 可以轉換為函數指針,但重要的是要了解這種轉換並不等同於它們真正的基礎類型。
以上是使用「auto」推導的 C 11 Lambda 表達式的型別是函數指標嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!