現在、汎用イベント クラスを実装しています。イベント ハンドラーには、sender パラメーターと可変数のイベント引数があります。したがって、イベント クラスの宣言は次のようになります。
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;
) を介して直接イベント パラメーターを提供することですが、明示的な方法でパラメーターを書き込まずに、これを直接行う方法があると思います。