when do destructors not run according to the standard?
When the last shared_ptr owning the object is destroyed, the owned object is also destroyed. But the standard doesn't specifically state that this happens in the context of exceptions