конечный автомат
В этих статьях есть все способы что я видел на плюсах (ну, с темплейтами есть чуть большие извращения).
Я считаю что для мелкого автомата (<5 состояний) лучше switch или goto ничего нет, если больше то я использую State/Strategy.
Кстати о goto, есть еще один способ, гибридный. По сути goto + функции на каждое действие/ивент и прыгается между ф-циями с помощью setjmp/longjmp, но это больше для С чем для С++.
Вы ищете что-то контретное? :) Просто не совсем понятно в чем поврос.
Всего один шаг далее простого switch-case в сторону элегантности, как мне кажется, это оформление переходов между состояниями в виде таблицы, как вот здесь: stackoverflow.com/a/1647679/1501359.