Boost C++ Libraries: Ticket #4822: deferral bug https://svn.boost.org/trac10/ticket/4822 <pre class="wiki">#include &lt;boost/statechart/event.hpp&gt; #include &lt;boost/statechart/state_machine.hpp&gt; #include &lt;boost/statechart/simple_state.hpp&gt; #include &lt;boost/statechart/transition.hpp&gt; #include &lt;boost/statechart/deferral.hpp&gt; #include &lt;boost/mpl/list.hpp&gt; #include &lt;boost/test/test_tools.hpp&gt; namespace sc = boost::statechart; namespace mpl = boost::mpl; struct ev1to2 : sc::event&lt; ev1to2 &gt; {}; struct ev2to3 : sc::event&lt; ev2to3 &gt; {}; struct ev3to4_1 : sc::event&lt; ev3to4_1 &gt; {}; struct ev3to4_2 : sc::event&lt; ev3to4_2 &gt; {}; struct s1; struct fsm : sc::state_machine&lt; fsm, s1 &gt; {}; struct s2; struct s1 : sc::simple_state&lt; s1, fsm &gt; { typedef mpl::list&lt; sc::transition&lt; ev1to2, s2 &gt;, sc::deferral&lt; ev2to3 &gt;, sc::deferral&lt; ev3to4_1 &gt;, sc::deferral&lt; ev3to4_2 &gt; &gt; reactions; }; struct s3; struct s2 : sc::simple_state&lt; s2, fsm &gt; { typedef mpl::list&lt; sc::transition&lt; ev2to3, s3 &gt;, sc::deferral&lt; ev3to4_1 &gt;, sc::deferral&lt; ev3to4_2 &gt; &gt; reactions; }; struct s4_1; struct s4_2; struct s3 : sc::simple_state&lt; s3, fsm &gt; { typedef mpl::list&lt; sc::transition&lt; ev3to4_1, s4_1 &gt;, sc::transition&lt; ev3to4_2, s4_2 &gt; &gt; reactions; }; struct s4_1 : sc::simple_state&lt; s4_1, fsm &gt; {}; struct s4_2 : sc::simple_state&lt; s4_2, fsm &gt; {}; int test_main( int, char* [] ) { fsm machine; machine.initiate(); machine.process_event( ev3to4_1() ); machine.process_event( ev3to4_2() ); machine.process_event( ev1to2() ); machine.process_event( ev2to3() ); BOOST_REQUIRE( machine.state_cast&lt; const s4_1 * &gt;() != 0 ); return 0; } </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/4822 Trac 1.4.3 Andreas Huber Thu, 11 Nov 2010 22:20:45 GMT status, milestone changed; resolution set https://svn.boost.org/trac10/ticket/4822#comment:1 https://svn.boost.org/trac10/ticket/4822#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">duplicate</span> </li> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost-1.46.0</span> </li> </ul> Ticket