http://esil0x.livejournal.com/10527.html
#include <stdio.h>
struct A {
void f () {}
};
int main (void)
{
void (A::*ptr) () = &A::f;
printf ("sizeof (ptr): %lu\n", sizeof (ptr));
printf ("ptr: 0x%lx 0x%lx\n", ((unsigned long*) &ptr) [0], ((unsigned long*) &ptr) [1]);
try {
throw ptr;
} catch (void (A::*exc) ()) { <------------ !!!!!!!!!!
printf ("exc: 0x%lx 0x%lx\n", ((unsigned long*) &exc) [0], ((unsigned long*) &exc) [1]);
}
}