mutable
読み:ミュータブル
外語:mutable
C++の予約語の一つ。
概要
mutableは英語で、変わりやすい、移り気の、気まぐれな、という意味の形容詞である。
特徴
C/C++
メンバー変数を修飾する。
constなインスタンスであっても、内容が変化して良いメンバー変数に付ける。
また、constなメンバー関数においても、mutableなメンバーは変更してよい。
C++11
ラムダ式を修飾して、コピーキャプチャした変数の書き換えを許可する。
ラムダ式は、記述したその場に無名関数(匿名関数)オブジェクトを生成する。
クロージャー変数の定義も可能だが、それは通常constであり、変数の書き換えは出来ない。
int n = 123;
[n](int x) -> int { return x * ++n; } // ←エラー
この変数をどうしてもラムダ式内で書き換える必要がある場合、ラムダ式をmutable修飾する。
[n](int x) mutable -> int { return x * ++n; } // ←OK
再検索