Wouldn't something like this work?
I haven't compiled this, but something like this should work, although one class for each number of argument would have to be created.
template<class A, class B, class C, class D>
void operator=(A (*ptr)(B,C,D))
fptr = ptr;
A operator()(B b,C c, D d)
////Code could look like this:
int myfunc(char, long, int);
f = myFunc;