Code:
void* Do2()
{
   //return (void(*)(int*,int)) &Test2::Func1; 1
   return &Test2::Func1;                       2
}
How would you expect the compiler to resolve the ambiguity inherent in statement 2, anyway??? Why did you deep-six statement 1? Could YOU, a sentient being, resolve the ambiguity without a hint??? Exactly what is your purpose in your approach?