When you write x, y in generic code, most of the time you intend that to mean “evaluate x,
then evaluate y and make that the result”. But since operator, can be overloaded, this could
end up meaning something else entirely.
A simple workaround is to stick a void() in between the two expressions:
x, void(), y
Since you can’t take a void parameter, there’s no way for this to result in a call to an overloaded operator,.