If the result of
.* or
->* is a function, then that
result can be used only as the operand for the function call operator
(). [
Example 1:
(ptr_to_obj->*ptr_to_mfct)(10);
calls the member function denoted by
ptr_to_mfct for the object
pointed to by
ptr_to_obj. —
end example]
In a
.* expression whose object expression is an rvalue, the program is
ill-formed if the second operand is a pointer to member function
whose
ref-qualifier is
&,
unless its
cv-qualifier-seq is
const. In a
.*
expression whose object expression is an lvalue, the program is ill-formed if the second
operand is
a pointer to member function
whose
ref-qualifier is
&&. The result of a
.* expression
whose second operand is a pointer to a data member is an lvalue if the first
operand is an lvalue and an xvalue otherwise
. The result of a
.* expression whose
second operand is a pointer to a member function is a prvalue
.