Kısa bir örnek:
#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"
}
Soru: mutableAnahtar kelimeye neden ihtiyacımız var ? Geleneksel parametrelerden adlandırılmış işlevlere geçişten oldukça farklıdır. Gerideki mantık nedir?
Ben değere göre ele geçirmenin tüm noktasının, kullanıcının geçici olarak değiştirmesine izin vermek olduğu izlenimi altındaydım - aksi halde, her zaman referansla yakala özelliğini kullanmaktan daha iyiyim, değil mi?
Aydınlanma var mı?
(Bu arada MSVC2010 kullanıyorum. AFAIK bu standart olmalı)
constvarsayılan olarak olmadığında iyi olduğundan emin değilim .
constvarsayılan olarak sevindim rağmen !