短い例:
#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を使用しています。これは標準のはずです)
const
デフォルトではない場合、それが良いかどうかはわかりません。
const
デフォルトで何かがついに嬉しいですが!