おそらく私はこれを考えすぎていますが、次の例を考えてみてください。
bool some_state = false;
// ... later ...
some_state = true;
do_something();
some_state = false;
do_something()
今、それが投げることができると想像してください。some_state
に戻ることはありませんfalse
。以前の値を記憶するために、スコープに基づいてプッシュ/ポップするある種の自動スタックがあると便利です。
{
scoped_restore res( some_state, true ); // This sets some_state to true and remembers previous value (false)
do_something();
} // At this point, res is destroyed and sets some_state back to false (previous value)
ブーストにはこんなものがありますか?もちろん、私は自分のオブジェクトを書くことができますが、最初に車輪を再発明していないことを確認したいと思います. 私は MSVC で C++03 を使用しているため、残念ながら新しい C++11 を使用することはできません :(