Thanks - I hadn't looked at the diagnostics
So really the problem is in the assumption that there is no side effect, wheras in fact there is. The side effect is that the variable is made present in a a new scope which prevents the object from being destroyed (and the destructor has side effects).
Hm, or does it. Since I'm not assigning it to a variable the refcount won't be being increased. But surely it can't be destroyed while it's still in scope - in a void context or not...
I'll test it out and report back.