o is determined by enumerating the applicable
operator co_await functions for an argument
a (
[over.match.oper]), and choosing the best one through
overload resolution (
[over.match])
.  If overload resolution is ambiguous,
the program is ill-formed
.If no viable functions are found, 
o is 
a.Otherwise, 
o is a call to the selected function
with the argument 
a.If 
o would be a prvalue,
the temporary materialization conversion (
[conv.rval]) is applied
.