class game_base { protected: typedef terminal terminal_t; const terminal_t term; typedef list master_t; master_t master; public: game(const terminal_t::value_type& c = '.'); }; template class game: public virtual game_base { public: game(const terminal_t::value_type& c): game_base(c) {} };