Hi, I'd like to define an abstract state which reacts to a specific event and calls a virtual hook function. In classes which inherit from my base class, I'd like to define those hooks. struct EvHeartBeat : boost::statechart::event<EvHeartBeat> {}; struct EvMyFoo : boost::statechart::event<EvMyFoo> {}; // this is my base class template< class MostDerived, class Context, class InnerInitial = boost::mpl::list<>, boost::statechart::history_mode historyMode = boost::statechart::has_no_history > struct BaseState : public boost::statechart::simple_state< MostDerived, Context, InnerInitial, historyMode > { typedef BaseState< MostDerived, Context, InnerInitial, historyMode > base_state; typedef boost::mpl::list< boost::statechart::custom_reaction< EvHeartBeat > > reactions; const std::string name; virtual boost::statechart::result hook() = 0; boost::statechart::result react ( const EvHeartBeat& e) { return hook(); } }; // this is my derived class struct B : BaseState<B, SomeContext, InitialState > { typedef boost::mpl::list< boost::statechart::custom_reaction<EvMyBar> > my_reactions; typedef boost::mpl::insert_range<my_reactions, boost::mpl::end<my_reactions>::type, BBFState::bbf_state::reactions>::type reactions; boost::statechart::result react ( const EvMyFoo& ) { std::cout << "B's reaction" << std::endl; } }; The derived class needs some explanation: I want it to react to other events as well, therefore the my_reactions typedef. Then I merge the mpl::list reactions from base and derived, this is a bit ugly but should be a generic way to do get the desired result. Now the problem: My compiler (g++-4.4) complains that there is no B::react( const EvHeartBeat& ) method. But it should, it's in the parent class. Furthermore, if I _remove_ the reaction to the other event, it compiles and actually uses the parent's reaction method. Of course I can find a workaround (including some boiler plate code), but as this will be an integral part of my project, I'd like it to be as correct, maintainable and elegant as possible. I'd be happy to get some opinions about what's wrong here, best regards Philipp