Вопрос почти не имеет смысла без примера. Итак, вот что я пытаюсь сделать.
В целом C ++ допускает следующее:
template<class T, class U, T t, U u>
void func() {}
func<char, int, 'A', 10>();
Но кажется, что его естественное вариативное расширение не работает.
template<class...T, T... t>
void func() {}
func<char, int, 'A', 10>();
И clang, и g ++ 4.7 отклоняют приведенный выше код. Ошибка отображается там, где выполняется создание экземпляра. Мне кажется, что два списка с переменными числами следует анализировать однозначно, потому что первый имеет типы, а другой - только целые значения.
Если вышеперечисленное не предназначено для работы, я думаю, что следующее тоже не сработает.
template <class Ret, class... Args, Ret (*func)(Args...)>
class Foo {};
Я считаю, что шаблон Foo весьма полезен.