2009/6/3 OvermindDL1 <overminddl1@gmail.com>
Actually, using Boost.Bind will use a lot more memory overall.  Would
it not be better to create a static function somewhere, something
like:

class SceneManager
{
   ...
   static deallocSM(SceneManage *ptr)
   {
       ptr->clearScene();
   }
   ...
};

And create as:
SceneManager *s=fromSomewhere();

boost::shared_ptr<SceneManager> p(s, &SceneManager::deallocSM);

Doing this means it only keeps a pointer to the function call, instead
of through a bind instantiation, meaning this will execute ever so
tiny slightly faster, as well as take less space?  It has been a while
since I created a new handler like that, but I 'think' the function
takes a pointer to the embedded pointer type, check the smart_ptr docs
for details I guess.

Modern compiler's might surprise you. Always measure performance or look at generated code before resorting to manual optimizations.

Roman Perepelitsa.