Its functional call takes as first argument an object of type T (or a reference or a pointer to it) and, as additional arguments, the arguments taken by pm (if any). The effect of such a call with fn as first argument are the same as calling fn.*pm (or (*fn).*pm if fn is a pointer), forwarding any additional arguments.

It has a member result_type, defined as an alias of Ret (which is the return type of pm).

If the member pointed by pm takes no arguments, it has a member argument_type, defined as an alias of T*.

If the member pointed by pm takes one argument, it has a member first_argument_type, defined as an alias of T*, and a member second_argument_type, defined as an alias of the argument taken by pm.