The hairiest bit is the abuse of compiler-specific pointer-to-member internals in order to provide more or less transparent API.