The boost shared_ptr lets me specify my own destructor function, but shared_ptr does more than I want -- I do not need thread-safety or reference counting, and would like to avoid the associated overhead. What I really want is an std::auto_ptr that lets me specify a destructor function. Does boost have something light-weight like this? Right now I implement my own, sort of like this (with extra conversion stuff): template <class T> class auto_ptr_ex { public: typedef void (* D) (T *); // object + destructor auto_ptr_ex (T *t, D d) : t_(t), d_(d) { } // copied auto_ptr_ex's don't destroy t_ auto_ptr_ex (const auto_ptr_ex &a) : t_(a.t_), d_(NULL) { } ~auto_ptr_ex () { if (d_) d_(t_); } private: T *t_; D d_; }; It's simple enough but I try not to reinvent wheels, so I was wondering if it existed already. Thanks, Jason