В названии написано почти все, как мне пойти на симуляцию сопоставления шаблонов ML-стиля на С++, например,
Statement *stm;
match(typeof(stm))
{
case IfThen: ...
case IfThenElse: ...
case While: ...
...
}
Где "IfThen", "IfThenElse" и "While" - это классы, которые наследуют "Statement"