探索C 11 中「auto」的Lambda 推導類型
與lambda 類型是函數指標的誤解相反,最近的一項測試相反,最近的一項測試揭示了一個意想不到的結果。當嘗試將 lambda 表達式指派給函數指標和「auto」變數時,斷言失敗。這就提出了一個問題,當使用「auto」關鍵字推導時,lambda 的真實類型是什麼?
澄清一下,lambda 表達式其實是函子的語法捷徑。在編譯期間,lambda 被轉換為函子物件。 [] 括號內的元素成為建構函數參數和函子成員變量,而 () 括號內的參數則轉換為函子的 operator() 參數。
引人注目的是,lambda 不會捕獲任何變數(即那些在其中沒有元素的 lambda) []) 可以轉換為函數指標(儘管 MSVC2010 不支援這種轉換)。然而,需要強調的是,lambda 的內在類型仍然是未指定的函子類型。
在提供的程式碼範例中,lambda 表達式LAMBDA 最初分配給函數指標pFptr,然後分配給「auto」 「變數pAuto。隨後的斷言驗證了pFptr 和pAuto 的類型是否相等,確實通過了。進行無縫賦值。和複雜性。
以上是C 11 Lambda 表達式的「auto」推導出什麼類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!