c++ - lambda 通过引用捕获更改没有可变关键字的变量
问题描述
[&]
当 lambda 表达式是否通过 reference( ) 标记捕获时,mutable
它仍然会更改值。但是按值捕获需要mutable
改变对象。
int main(){
int x = 10;
auto ByValue = [x](){ --x; }; // error: decrement of read-only variable 'x'
auto ByRef = [&x](){ --x; }; //No Error
auto ByValM = [x]()mutable{ --x; }; // No error
auto ByRefM = [&x]()mutable{ --x; }; // No error
}
为什么[&x](){ --x; };
能够改变变量x
?是通过引用捕获mutable
隐含地标记了 lambda 表达式吗?
解决方案
推荐阅读
- java - 获取非空对象数组
- php - Laravel js 错误 GET http://localhost:8000/admin/product/js/jquery-3.2.1.min.js 404(未找到)
- php - 如何设置我的邮件函数 php 的标题以接受 html 格式的用户输入信息和附件
- c# - 如何仅在使用 SQL 服务器的数据库填充的 datagridview 中显示日期?
- android - 检查一个值是否为空
- mysql - 带有输入和输出 SQL 的存储过程
- caching - Wildfly infinispan Web 缓存容器有什么用?
- grafana - 循环数据到 grafana
- java - ORA-29531: 类错误中没有方法
- python - sklearn / CountVectorizer : 适合然后变换不同的输入语料库