> Returning multiple values is something that would require ABI support.
Uh, so what?
> Only values in the registers can be returned because the callee stack frame vanishes at return. Returning structs is already something poorly supported, because if it doesn't fit in registers, where do you store it then?
On the stack of course. Also, returning structs isn't "poortly supported" at all, it works just fine.
> The reason C++ can do it is because new/delete are part of the language,
That's simply nonsense.