Finite State Machine with std::variant, C++17 and C++20
The article shows how to implement a Finite State Machine (FSM) using std::variant in C++17 and C++20. The author explains that FSMs are useful for modeling complex systems with multiple states and transitions between them.
The article starts with an introduction to std::variant, a type-safe union that can hold values of different types. The author then shows how to define the states and events of the FSM using std::variant. They also explain how to define the transitions between states using functions that take the current state and event as inputs and return the next state.
The article includes code snippets that demonstrate how to implement a simple FSM for a traffic light system. The code shows how to define the states as variants and the transitions as functions. The author also explains how to use std::visit to handle the different states and events.
The article then goes on to discuss the improvements to std::variant in C++20, including the ability to use non-default constructors and constexpr support. The author shows how these improvements can be used to simplify the implementation of the FSM.
Overall, the article provides a clear and concise introduction to implementing FSMs using std::variant in C++17 and C++20. The code snippets and explanations are useful for developers who want to learn how to model complex systems using FSMs.