
I didn't blame it. And I don't consider my example difficult, anyway. It provides a nice abstraction from the actual pointer type while not introducing excessive genericity. I can't remember the exact code but I surely used such technique somewhere in my code. Not sure it involved scoped_ptr, though...
What's the status about this? If we don't want to "break" the interface, we can always provide an option to enable this feature, something like (same for scoped_array): template<class T #ifdef BOOST_SCOPED_PTR_ENABLE_DELETER , class D = boost::checked_deleter<T> > #endif class scoped_ptr { // ... public: ~scoped_ptr() { // ... #ifdef BOOST_SCOPED_PTR_ENABLE_DELETER deleter()(ptr); #else boost::checked_delete(ptr); #endif } }; BOOST_SCOPED_PTR_ENABLE_DELETER is not defined by default. There are lots of samples like this in other boost libraries, is it reasonable?