Короткий приклад:
#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
за замовчуванням!