16 Overloading [over]

16.5 Overloaded operators [over.oper]

16.5.6 Class member access [over.ref]

operator-> shall be a non-static member function taking no parameters. It implements the class member access syntax that uses ->.

postfix-expression -> template id-expression
postfix-expression -> pseudo-destructor-name

An expression x->m is interpreted as (x.operator->())->m for a class object x of type T if T​::​operator->() exists and if the operator is selected as the best match function by the overload resolution mechanism ([over.match]).