
In fact I did not missed this part of tutorial. But since documentation is
almost non-existent in area of history types description,
Boost.Statechart implements the state machine semantics defined by the UML standard, which is mentioned in the documentation. I hope you understand that describing how FSM history works is therefore beyond the scope of the documentation.
As for me, most logical behavior should be like this - if A uses deep
history (I take it as 'total history for all substates'), A should have
single default state for cases like this C -> B -> A.
IIUC, what you find most logical is contrary to what UML defines. Moreover, in practice it does happen that you need different default states for different transitions to history.
But for cases
A -> B -> A in B -> A transition user should use outermost state A in
transition destination and do not care about how history is saved inside
it or about its default state.
As I've mentioned before, you *can* have exactly what you describe here. In your code, please replace the line return transit< sc::deep_history < StateA1 > >(); with return transit < StateA >(); and you should see exactly the same behavior. This works because StateA specifies sc::deep_history < StateA1 > as its inner initial state. Regards, Andreas