質問: Boost.Statechart を使っているのですが、遷移元の状態がいくつかある場合、前の状態に戻る簡単な方法はないでしょうか? どの状態から入ってきたのかを自前で覚えておけば出来るのですが、もっとよい方法があればお教え頂けませんでしょうか?
回答: `boost::statechart` ライブラリは使ったことがありませんので、より詳しい方が現れるまでのつなぎとしてご覧いただければと思います。 Boost::statechart Tutorial 上記、英語になりますが情報としては新しいです。 Boost ライブラリの FSM チュートリアル 日本語版 上記 PDF は日本語訳が結構適当ですが...。 チュートリアルのソースコード上は FSM なので名前が変わる前...もう10年程前です。 ただ、英語に不慣れな方でも感じはつかめると思いますのでリンクは残しておきます。 チュートリアル資料に、**History** または **履歴** といった項目がありました。 例えば `simple_state` の宣言は以下の通りとなっています。 ``` template< class MostDerived, class Context, class InnerInitial = mpl::list<>, history_mode historyMode = has_no_history > class simple_state : public detail::simple_state_base_type< MostDerived, typename Context::inner_context_type, InnerInitial >::type ``` テンプレートパラメータの `history_mode` に以下の enum のどれかを渡すことができます。 ``` enum history_mode { has_no_history, has_shallow_history, has_deep_history, has_full_history // shallow & deep }; ``` それぞれの shallow, deep, full の違いが上記チュートリアルからは、いまいち読み取れなかったです、申し訳ありません。 状態履歴を無効化できるかどうか という FAQ も掲載されていますので、併せてご確認ください。(動的に無効化できるかどうかなので本題とは、ずれます)