【发布时间】:2019-05-27 10:42:28
【问题描述】:
mutable lambda 可以更改其捕获列表成员的值(按值捕获)。有什么办法可以让捕获列表的某些成员在mutable lambda 中保留const?
例如我想更改i,但在the following code sample 的lambda 的正文中有const j:
#include <iostream>
int main()
{
int i = 42;
int j = 108;
auto lambda = [i, j]() mutable
{
i = 15;
std::cout << "i = " << i << std::endl;
std::cout << "j = " << j << std::endl;
};
lambda();
}
【问题讨论】:
-
是的。写一个结构体。
-
您始终可以使用
const成员捕获课程:struct hasI { const int i; }。现在在可变 lambda 中按值捕获它,hasI.i仍然是const。 -
@SamVarshavchik 嗯。有趣的解决方案。而且我可以使这个结构本地化并且不命名,所以这里不会有很多样板。你能写下你的评论作为答案吗?
-
@PasserBy 谢谢。
标签: c++ lambda constants mutable const-correctness