Раз:
class C {
...
// Специализации ниже, вне класса.
template<class T> void fOne(T x);
// - Не-шаблонный метод с пустым списком параметров не вызовется из F::call<TT...>() при пустом списке аргументов:
// оно будет искать fMany<>(), а не fMany().
// - Шаблон с пустым списком аргументов сделать нельзя: оно будет считать синтаксис "template<>"
// специализацией несуществующего шаблона.
// - Если в теле класса объявить "template<class... TT>", то специализация "template<> void fMany<>() {}" возьмётся,
// но "template<class T, class TT...>" будет считаться частичной специализацией, что для функций запрещено.
// Остаётся эмулировать шаблон с пустым множеством аргументов (т.е. "sizeof...(RR) == 0") через enable_if.
template<class... TT, std::enable_if_t<(sizeof...(TT) == 0), bool> = true> void fMany() {}
template<class T, class... TT> inline void fMany(T arg, TT... args) {
fOne(arg);
fMany(args...);
}
}