首頁 >後端開發 >C++ >C 11 Lambda 表達式的「auto」推導出什麼類型?

C 11 Lambda 表達式的「auto」推導出什麼類型?

Barbara Streisand
Barbara Streisand原創
2024-12-06 01:10:10539瀏覽

What Type Does

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

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