As I write this, your text says "Link [here] [1]" without a link.
But, in fact, the standard allows a deletepointer to an incomplete type so that you can use the knowledge that the compiler does not have, namely, that the type destructor does nothing.
std::auto_ptr - , , PIMPL ( Herb Sutter GOTW PIMPL, std::auto_ptr). boost::shared_ptr - , (). , boost::shared_ptr , .
hth.,