
The region ids are numbered in the order of the initial_state typedef:
typedef boost::mpl::vector<Start1,Start2> initial_state;
Start1 will be the initial state of the first region (id 0), Start2 the initial state of the second region (id 1).
Thanks, I understand. I believe if I pass the out of range value then compile error should occur. And I tested. 0 and 1 are OK. (expected) -1 is NG. (expected) But 2 is OK. (unexpected) 3 or more is NG. (expected)
I'm not expert of msm's implementation.
I suspect that
state_machine.hpp:(2256) BOOST_STATIC_ASSERT(find_region_id<typename StateType::wrapped_entry>::region_index <= nr_regions::value);
should be
BOOST_STATIC_ASSERT(find_region_id<typename StateType::wrapped_entry>::region_index < nr_regions::value);
Hi Takatoshi, Clearly you're right and it's a beginner's mistake. Thanks, I'll fix this immediately.
Alternatively, you can omit the id and let MSM build a graph using mpl_graph and find this out for you (which will work if your pseudo entry is somehow connected to the initial state). Please note however that there is a compile-time cost for this.
Great!! This is the function that I really want to.
Good :) You're probably one of the first to use this new feature so your experience with it will be very useful. Please let me know how it went.
P.S.We met BoosoCon2010, how are you?
I remember. We spoke at the end of the talk, right? I'm doing great, thanks :) I remember you required some feature but I forgot what it was. Was it this automatic region id calculation of pseudo entry state? Christophe