У меня есть DefineEvent
шаблон класса, который я использую для упрощения определения новых классов событий.Это выглядит так (довольно волосато, я знаю):
template<class EventClass, class... Parents>
class DefineEvent : public virtual Event, public Parents...
{
public:
DefineEvent()
{
static const EventTypeInfo& info = TypeInfoParentSetter<EventClass>
::SetOnce<Parents...>(TypeInfoHolder<EventClass>::Instance());
}
};
Класс TypeInfoParentSetter
, который я там использовал, выглядит так:
template<class EventClass>
class TypeInfoParentSetter
{
public:
template<class... Parents>
static const EventTypeInfo& SetOnce(TypeInfoHolder<EventClass>& holder)
{
// ...
}
};
Я получаю ошибку компиляции, указывающую на::SetOnce<Parents...>
строка в DefineEvent()
, сообщающая мне, что компилятор "ожидал первичного выражения перед '...' токеном".Как мне это исправить?
Вы можете просмотреть код в контексте здесь , но обратите внимание, что это довольно уродливо.