a static member is a class member, while a non-static member is an boject member.
It is hard for the compiler to check validity of the sytax if the member fuction poiter is an object memeber. because the compiler cannot always know the exact memeber function it is pointing to at compile time.