简短示例:
#include <iostream>
int main()
{
int n;
[&](){n = 10;}(); // OK
[=]() mutable {n = 20;}(); // OK
// [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda
std::cout << n << "\n"; // "10"
}
问题:为什么我们需要mutable
关键字?与传递给命名函数的传统参数完全不同。背后的原理是什么?
我给人的印象是,按值捕获的全部目的是允许用户更改临时值-否则,使用按引用捕获几乎总是更好,不是吗?
有什么启示吗?
(顺便说一下,我正在使用MSVC2010。AFAIK,这应该是标准的)
const
默认情况下不是所有其他功能,则不确定是否很好。
const
可以默认设置某些东西了!