#include <iostream>
using namespace std;
template<class S> class Foo;

template<class Ret, class Arg, class... Args>
class Foo<Ret(Arg*, Args...)> 
{
public:
	template<class FUNC>
	Foo(FUNC func, int)
	{
		cout << "func" << endl;
	}
	template<class Rett>
	Foo(Rett(Arg::*method)(Args...)) { cout << "fptr" << endl; }
	
};

template class Foo<void(int*, int)>;

int main()
{
	return 0;
}
