I find that I rarely write code in a dtor, unless I'm explicitly taking advantage of RAII (or executing "clean up" code that doesn't specifically deallocate resources), but do you really mean that you use the auto-generated assignment operator and copy ctor? Or that you prohibit their use and avoid copying? Do you hold all of your pointers in reference-counted smart pointers?