#include <utility>

struct example
{
	void f0(int, int)
	{
		
	}
	
	template<class T>
	void f1(T&&, int)
	{
		
	}
};

#define FWD(xs) ::std::forward<decltype(xs)>(xs)

template<class T, class... Ts, class... TArgs>
void forwarder(void(T::*fptr)(Ts...), TArgs&&... xs)
{
	T instance;
	(instance.*fptr)(FWD(xs)..., 0);
}

int main() 
{
	forwarder(&example::f0, 10);
	forwarder(&example::f1, 10);
	return 0;
}