簡體   English   中英

Lambda通過引用

[英]Lambda by reference

我想知道標准是否允許您使用=通過引用傳遞所有成員。 所以,例如,這是有效的

int i = 0;
auto f = [&i]() {
    i = 1;  
};

但是,這不會,也不會在=后面加上&

int i = 0;
auto f = [=]() {
    i = 1;  
};

你的意思是:

int i = 0;
auto f = [&]() {
    i = 1;  
};

[=]按值捕獲lambda體內提到的所有內容。

[&]通過引用捕獲lambda體內提到的所有內容。

在這個lambda表達式中

int i = 0;
auto f = [=]() {
    i = 1;  
};

捕獲的變量i是lambda的數據成員,在lambda中更改。 所以你必須寫

int i = 0;
auto f = [=]() mutable {
    i = 1;  
};

如果你想通過引用捕獲我,你應該寫

int i = 0;
auto f = [=,&i]() {
    i = 1;  
};

暫無
暫無

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

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