В настоящее время я реализую общий класс событий. Обработчики событий имеют параметр отправителя и переменное количество аргументов событий. Итак, объявление класса событий выглядит следующим образом:
template<typename SENDER , typename... ARGS>
class event;
Чтобы разрешить определенные детали реализации, мне нужен CRTP события, например:
template<typename SENDER , typename... ARGS>
class event : public CRTPBase<event<SENDER,ARGS...>> { ... };
А база CRTP должна знать параметры события. Итак, я попробовал с параметром шаблона шаблона:
template<typename SENDER , template<typename SENDER , typename... ARGS> class EVENT, typename ARGS>
class CRTPBase { ... };
Но это не работает (я использую GCC 4.8.1).
Итак: Как лучше всего извлечь вариативные и не вариативные параметры шаблона аргумента CRTP?
РЕДАКТИРОВАТЬ: Другой способ - предоставить параметры события непосредственно через шаблон CRTP (template<typename EVENT , typename EVENT_SENDER , typename... EVENT_ARGS> class CRTPBase;
), но я думаю, что есть способ сделать это напрямую, без явного написания параметров.