Parámetro de plantilla: puntero de función con argumentos variados

Sé que puedo hacerlo:

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

Pero como puedes ver estoA1 yA2 son un poco feos De hecho, no sé la cantidad de argumentos. Suena como un trabajo para plantillas variadas. Lamentablemente no puedo hacer esto:

// 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{}

Ni esto:

plantilla de clase C;

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

¿Quiero demasiado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta