新しいイベントクラスの定義を簡単にするために使用するクラステンプレートはDefineEvent
です。私が言って、DefineEvent()
に::SetOnce<Parents...>
ラインを指してコンパイル・エラーが発生します関数呼び出しでテンプレート引数を展開する方法は?
template<class EventClass>
class TypeInfoParentSetter
{
public:
template<class... Parents>
static const EventTypeInfo& SetOnce(TypeInfoHolder<EventClass>& holder)
{
// ...
}
};
:私が使用TypeInfoParentSetter
クラスは次のようにそこに見える
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());
}
};
:この(かなり毛深い、私が知っている)のように見えています私はコンパイラが "...の前にプライマリ表現を期待していた"トークン "。これをどうやって解決するのですか?
hereという文脈でコードを表示できますが、かなり醜いことに注意してください。