Ticket #4926 (closed Bugs: fixed)
MSM deferred events doesn`t works when compile using msvc 8.0
|Reported by:||anonymous||Owned by:||chenry|
|Milestone:||To Be Determined||Component:||msm|
|Keywords:||msm msvc 8||Cc:|
Porting my state machine from Boost.Statechart to MSM I have came across with strange problem, events deferring feature that worked well with msvc 10.0 in test programs, doesn`t want to work in real application compiled with msvc 8.0. After digging in msm sources I found the place and found how to fix it. In msm/back/state_machine.hpp there is template handle_defer_helper which, as I found, always use empty implementation. I have check has_fsm_deferred_events metafunctor and it return true, but vc 8.0 compiler continues to use empty implementation. I replaced enable_ifs return type from void to int and it helped. Seems void type is some kind of "priviledged type" for msvc, I dont know how to explain it.
Patch attached to bug