forked from boostorg/functional
If an exception is thrown in the constructor of a smart pointer, then the smart pointer should handle deallocating the memory. If this was inside the try block, then the catch block would deallocate the memory a second time.