C 巢狀lambda中可以引用外圍lambda捕獲的變數嗎

時間 2021-06-09 03:31:23

1樓:

可以。我試了下 gcc 從 4.7.1 (-std=c++11) 開始就支援這種寫法了。4.7.1 可是 gcc 第乙個正式支援 C++11 的版本 。

(最早到 gcc 4.5.3 ,雖然它還不能識別引數 -std=c++11,但是用 C++11 的代號 -std=c++0x,也能通過編譯。

也就是說,gcc 尚在 11 的實驗階段,就能支援巢狀捕獲的寫法了)

作為對比,vs 是跳過 C++11 直接奔向 C++14 的。所以整個 vs 系列對純 C++11 (即 98 之後但不包含 14 之後的版本的內容) 的支援並不太好。你可以看到 vs2019 裡的語言選項裡只有 C++14、17 和 latest (指代即將到來的 20),甚至都沒有 11 這個選項。

所以,你只有嘗試改一種寫法嘍,比如試試在外層 lambda 的函式體裡,把捕獲的引用接一下,然後內層再捕獲外層接的那個。

autof=

[&c];};

C 中引用有什麼用?

海賊王panther 一般是為了函式傳參方便,例如在交換兩個數的函式中 1 沒有使用引用 void fun int a,int b int x 1,y 2 fun x,y 2 使用引用 此處 為引用 void fun int a,int b 函式呼叫 int x 1,y 2 fun x,y 這樣就使...

C 中的 this 為什麼是指標而不是引用?

中二青年 這個是c 作者的個人主頁,可以看一下答案,裡面還回答了,為什麼引入ref的原因。Why is this not a reference?Because this was introduced into C really into C with Classes before referenc...

C 中的lambda表示式的優越性體現在那些方面?

消失的無意識 有乙個有點用的特性,lambda表示式的型別是獨一無二的,用它可以特化出乙個在該位置唯一的模板。其實和宣告乙個匿名結構是一樣的 可以用來區分static const變數快取,比如說執行時字串拼接,然後用於exception中,這裡拼接函式就要求每個地方是不同的特化。諸如 pretty ...