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

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

Barbara Streisand
發布: 2024-12-06 01:10:10
原創
557 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板