Parâmetro de modelo - ponteiro de função com argumentos variados

Eu sei que posso fazer isso:

template<typename T, typename Ret, typename A1, typename A2, Ret(T::*F)(A1, A2)>
class C{}

Mas como você pode ver issoA1 eA2 são um pouco feios. De fato, não sei o número de argumentos. Parece um trabalho para modelos variados. Infelizmente não posso fazer isso:

// doesn't work - parameter pack must appear at the end of the template parameter list
template<typename T, typename Ret, typename... Args, Ret(T::*F)(Args...)>
class C{}

Nem isso:

classe de modelo C;

// doesn't work - wrong syntax
template<typename T, typename F, typename Ret, typename... Args>
class Delegate2<Ret(T::*F)(Args...)>{}

Eu quero muito?

questionAnswers(2)

yourAnswerToTheQuestion