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
.