Contoh singkat:
#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"
}
Pertanyaannya: Mengapa kita perlu mutable
kata kunci? Ini sangat berbeda dari melewati parameter tradisional ke fungsi bernama. Apa alasan di baliknya?
Saya mendapat kesan bahwa seluruh poin dari capture-by-value adalah untuk memungkinkan pengguna untuk mengubah sementara - jika tidak, saya hampir selalu lebih baik menggunakan capture-by-reference, bukan?
Adakah pencerahan?
(Omong-omong, saya menggunakan MSVC2010. AFAIK ini seharusnya standar)
const
secara default.
const
secara default!