A binary operator function
is a function named operator@
for a binary operator @ that is either
a non-static member function ([class.mfct]) with one non-object parameter or
a non-member function with two parameters.
For an expression x @ y with subexpressions x and y,
the operator function is selected by overload resolution ([over.match.oper]).
If a member function is selected,
the expression is interpreted as
x.operator@(y)
Otherwise, if a non-member function is selected,
the expression is interpreted as