変数がconst
であることは意味をなさない場合がありますが、スコープの後半部分でのみ発生することがあります。そのキャプチャ任意のC++のイディオムがあります定数ですが、このスコープの残りの部分だけです
void foo() {
int n;
// Do things that result in initialization of n
freeze n; // Imaginary construct that declares "n" const for rest of scope
// Later steps that depend on 'n' but do not change it
}
- 例えば、ブロックの最初の部分は、値を設定することもできますし、それは我々がその変数を設定し、「完了」していることが明らかであれば、残りの可読性を向上させることがありますこのパターン?もちろん、ブロックの後半部分は別の機能に移動することもできますが、移動させることなく実行できますか?
「n」を生成するロジックを独自の関数にカプセル化することは、それほど意味がありませんか?そして、 'const int n = gimme_an_n();'だけです。あなたはラムダを使ってそのインラインで行うことができますが、あなたはしたいですか? – paddy