1
int a = 3;
auto f = [a] (int a) { return a > a; }
問:捕獲局部變量名稱a
和lambda有區別的方法嗎?C++ lambda捕獲局部變量如參數名稱
我認爲它在參數範圍內a
是獨立於外部局部變量a
,想知道是否有像這樣的指針有區別。
int a = 3;
auto f = [a] (int a) { return a > a; }
問:捕獲局部變量名稱a
和lambda有區別的方法嗎?C++ lambda捕獲局部變量如參數名稱
我認爲它在參數範圍內a
是獨立於外部局部變量a
,想知道是否有像這樣的指針有區別。
當編譯器處理lambda時,它所做的基本上是創建一個特殊的類,它實例化。實際的lambda函數變成一個operator()
函數,捕獲的變量變成這個特殊類中的成員變量。
這意味着正常的範圍規則適用,其中局部變量和參數會影響成員變量。
所以在你的情況下,a
是參數,而不是捕獲的變量。