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: mutable
Anahtar 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ı)
const
varsayılan olarak olmadığında iyi olduğundan emin değilim .
const
varsayılan olarak sevindim rağmen !