多数の条件付きブロック全体で参照変数を使用する場合、参照変数をどのように宣言すればよいですか? 例えば:
for (i = ...) {
if (expr_1(i)) {
// y[idx(i)] only exists when expr_1 is true
// i.e. idx(i) is a valid index only when expr_1 is true
MyType &x = y[idx(i)];
...
}
... // Stuff not dependent on x
if (expr_2(i)) { // (expr_2 is such that expr_1 implies expr_2)
foo(x); // error, as x not scoped to persist to here
...
}
... // More stuff not dependent on x
if (expr_3(i)) { // (expr_3 is such that expr_1 implies expr_3)
bar(x); // error, as x not scoped to persist to here
...
}
... // etc
}
宣言時に参照変数を初期化する必要があるため、条件付きブロックの外で宣言することはできませんが、参照する変数は条件付きブロック内にのみ存在します。