揭秘C 11 中「auto」的Lambda 類型推導
在C 11 領域,lambda 表達式的引入引發了一些問題關於使用“auto”關鍵字推導時的基礎類型。事實證明,lambda 類型是函數指標的假設是不準確的,如以下程式碼片段所示:
#define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == typeid(pAuto)); // assertion fails! }
此程式碼展示了函數指標和使用「auto」的lambda 表達式之間的類型推導差異。 」關鍵字。有趣的是,斷言失敗了,這表明lambda 的類型不是函數指針。
揭開Lambda 類型的真實本質
要理解這個明顯的悖論,至關重要的是要認識到lambda 表達式的類型在C 11中仍未指定。函數運算子() 的參數。不支援的功能。
「auto」 " 關鍵字為類型推導提供了便利,但辨別不同語言實體的底層類型至關重要。就 lambda 表達式而言,它們的未指定性質和轉換為函數指標的潛力(如果適用)突顯了 C 11 提供的靈活性,同時也強調了理解語言複雜細微差別的重要性。
以上是為什麼 `auto` 不將 Lambda 表達式的類型推導為 C 11 中的函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!