Pointer to member function objects have a layout equivalent to:
struct __mptr { 
   __vptp f; 
   ptrdiff_t d; 
};
    where _vptp is the following union:
union {
   void (*f) ();
   int 0; 
}
    The parameter f is the pointer to the member function if it is nonvirtual. The 0 is the offset to the virtual function pointer within the class object. The parameter d is the offset to be added to the beginning of the class object for this pointer.