Введение новых имен через typedef
(или using
) не влияет на отношения между типами.
Таким образом, вопрос в том, является ли msm::back::state_machine<Derived>
подтипом msm::back::state_machine<Base>
.
Что это не так.
Вы также можете легко проверить такие вещи с помощью небольшого кода:
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_base_of<SM_Base, SM_Derived>::value;
}