There is an other approach. Don't use constructors at all. Back to good old init() and destroy() functions, and use valgrind with automated testing and coverage to ensure nothing gets lost. Delivered systems with zero downtime that way (7 years and counting last time I checked)