Don't have a solution yet, although I understand the problem you describe about the guard conditions over a completion transition. If I come up with an elegant solution I will post it in this newsgroup.
Ok, please do!
I have yet another question regarding events: Can you create a hierarchy of events in such a way that Boost is able to distinguish between the new subtypes? Here is an example to clarify the question:
class AbstractEvent : public sc::event<AbstractEvent>{}; class EventA : public AbstractEvent{}; class EventB : public AbstractEvent{};
In this example, events EventA and EventB have the same type ID as AbstractEvent in Boost. Is there a way of giving EventA and EventB different type IDs, without inheriting directly from event< ... >?
Only if you make AbstractEvent a template: template<class MostDerived> class AbstractEvent : public sc::event<MostDerived>{}; class EventA : public AbstractEvent<EventA>{}; class EventB : public AbstractEvent<EventA>{}; Please see http://www.boost.org/libs/statechart/doc/faq.html#PolymorphicEvents for more information. HTH, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.