|
|
|
|
|
by nwlieb
883 days ago
|
|
There's some ambiguity for argument destruction order for example: https://stackoverflow.com/a/36992250 Similarly, the construction/destruction order for std::tuple elements is not well defined. Granted, that's implementation defined behavior, which is technically deterministic on a single compiler. |
|
I suppose the destruction of whatever the expressions constructed still happens in reverse order of construction.
But either way I might not even care, I'm aware that at the level of a single statement the execution sequences aren't much defined, so I rarely put more than one mutating thing per expression, or otherwise I'm sure that I don't care about the order -- I could live with any sequence as well as totally parallel execution.
Example: buf[i++] = 5 has 2 mutating sub-expressions, but I know it's not messing up anything. I don't care whether i gets incremented before 5 gets assigned or the other way around.