簡體   English   中英

lambda的默認捕獲是什么?

[英]What is the default capture of a lambda?

我正在閱讀一篇文章,內容如下

如果存在任何捕獲默認值,則可以隱式捕獲當前對象(* this)。 如果隱式捕獲,則始終通過引用捕獲,即使捕獲默認值為=。

我很難理解上述說法-捕獲默認值是什么? 這是否意味着,如果我用=為捕捉(這意味着在當前范圍復制變量),它含蓄地增加了this對捕獲以及因此允許我用this

捕獲默認值是什么?

=&

逗號分隔的捕獲列表( [] )可以選擇以以下捕獲默認值之一開頭: =& (可能是列表中的唯一元素)。 如果存在捕獲默認值,並且您嘗試在lambda中使用必須捕獲的變量(自動變量或this ),則捕獲默認值將按值( = )或按引用( & )捕獲該變量。

這是否意味着,如果我用=為捕捉它隱含增加this給捕獲

是的,但前提是您實際使用它(直接或通過訪問類成員)。

捕獲默認值不會捕獲任何變量,除非您在lambda中實際使用了它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM