
Andreas Huber <ah2003@gmx.net> writes:
Ok, but how do you propose should the state machine then be terminated? By simply not calling the exit actions of still active states?
Yes, why not?
Because that would essentially be the same as destructing an object by not calling its destructor (i.e. by only deallocating the memory).
That's circular logic.
I'm not only saying this because an active state happens to be an object in boost::fsm. State machines frequently acquire resources in entry actions and dispose of them in exit actions. Those resources would simply be leaked if there's no guarantee that exit actions are called under all non-fatal error situations.
It seems reasonable that well-designed state objects should also deallocate any resources they own in their destructors. It doesn't neccessarily seem reasonable as a consequence to force all exit actions into the state's destructor. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com