I was just discussing Clang’s
with Mathias Stearn. Specifically, the fact that
[[trivial_abi]] changes the Itanium ABI
for trivial-ABI types so that parameters of trivial-ABI type are owned and destroyed by the
callee, rather than by the caller.
Now consider two pieces of C++ code. One of them works in practice today; the other does not. Neither one is guaranteed to work. They both have implementation-defined behavior (that is, it is implementation-defined whether their behavior is undefined or not). …