The question almost does not make sense without an example. So here is what I'm trying to do.
In general C++ allows the following:
template<class T, class U, T t, U u>
void func() {}
func<char, int, 'A', 10>();
But it seems like its natural variadic extension does not work.
template<class...T, T... t>
void func() {}
func<char, int, 'A', 10>();
Both clang and g++4.7 reject the above code. The error is shown where the instantiation is done. It appears to me that the two variadic lists should be parsed unambiguously because the first one has types and the other one has integral values only.
If the above is not meant to work, I think the following won't work either.
template <class Ret, class... Args, Ret (*func)(Args...)>
class Foo {};
I think the Foo template is a rather useful thing to have.