まず、一番の下っ端にFuncHolderクラステンプレートがあります。 class FuncHolder<typename>; 引数の型/数(最大6)/メンバー関数かどうかによって部分特殊化していて、このクラスが関数ポインタと任意の型/個数の引数をすべて保持します。 class FuncHolder<R (C::*)(T1, T2, T3)> : public FuncHolderBase<R> {...}; そして、関数を呼び出せるように、operator()をオーバーロードしています。 今回の質問は、これのテンプレート引数の記述方法でした。
その上にいるのがFuncHolderBase<typename R>クラステンプレートで、FuncHolderはこれを継承しています。 このクラスは抽象クラスで、コンテナに入れるためだけに用意しました。 内容は virtual R operator()() const = 0;だけです。