A high performance headeronly compile time evaluated statemachine. Big shoutout to boost::msm for inspiring me to create this project. I started this project to learn more about template metaprogramming while also making something very usefull for some of my other projects. It is probably (definitely 😅) not as complete and performant as boost::msm since they have put years of reasearch into it and use even less runtime stuff than I do here :)
A C++ compiler that has c++20 support.
Check out the wiki to learn more about the msms and its implementation!
By itself the statemachine is not thread safe, if you want to dispatch events from multiple events you would need to handle this yourself in the calls to ProcessEvent();
.
If an event is dispatched whilst it is performing a transition the event will be stored in a queue and will be executed as soon as the current transition is finished. This means that if you decide to do a lot of computation in an OnEntry()
, OnExit()
etc. it will block the statemachine from perfoming transitions. Think carefull about how you implement these functions :)