[expr.mptr.oper]/6 says

If the result of .* or ->* is a function, then that result can be used only as the operand for the function call operator ().

which suggests that a function call operator only has one operand, and that the argument expressions don't count. This is not consistent with [expr.ref]/6.3.2, which refers to "the left-hand operand of a member function call".

The wording of [expr.mptr.oper]/6 should be changed to also say "left-hand operand".

In case there is any doubt that the argument expressions should be considered operands, consider [intro.execution]/3.1. If we consider argument expressions to be operands, then [intro.execution]/3.1 implies that they are subexpressions of the function call expression. This is obviously what was intended.

© 2022 pullanswer.com - All rights reserved.