
Andreas Huber <ahd6974-spamgroupstrap@yahoo.com> writes:
David Abrahams <dave <at> boost-consulting.com> writes:
"Andreas Huber" <ahd6974-spamgroupstrap <at> yahoo.com> writes:
I don't think so. Even with Aleksey's approach, with an FSM becoming sufficiently large at some stage the compiler will give up because it reached its template nesting depth limit or compilation becomes infeasible because it takes too long (usually because the compiler eats up so much memory that there's a lot of swapping).
That could happen in any program that uses templates. Or uses a compiler, for that matter. I believe this to be FUD, and false for practical sizes of FSMs.
The BitMachine example shows that at least one current compiler (MSVC7.1) fails to compile a flat state machine having between 32 and 64 states (at the time when the library still worked on MSVC6.5, it failed with < 16 states). Exactly where it fails I didn't test, moreover it is a rather arificial FSM that noone would construct in practice. Unfortunately I don't have real-world experience with machines that large but I do have feedback that such large FSMs exist in practice (40 states). Moreover, I expect the problem to become worse with the use of hierarchical/orthogonal states. For me this is enough evidence that I cannot just ignore the issue.
I'm not saying that Aleksey's library can handle all practical state machines. I'm saying that it's possible to build a statically-dispatched FSM library that handles all practical state machines. -- Dave Abrahams Boost Consulting www.boost-consulting.com