- int stateNum;
- bool isInitial;
- std::set<unsigned> stateInfo;
- typedef std::map<unsigned, State *> TransitionMap;
- TransitionMap Transitions;
+ // stateNum is the only member used for equality/ordering, all other members
+ // can be mutated even in const State objects.
+ const int stateNum;
+ mutable bool isInitial;
+ mutable std::set<unsigned> stateInfo;
+ typedef std::map<unsigned, const State *> TransitionMap;
+ mutable TransitionMap Transitions;