$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Howard Hinnant (hinnant_at_[hidden])
Date: 2006-11-29 12:11:25
On Nov 29, 2006, at 11:45 AM, Maitre Bart wrote:
> Still, the method used by shared_ptr<> is very useful: it hides the  
> deleter in
> a template class the derives from a normal base class that is a  
> member of the
> shared_ptr<>. So when you defines the smart pointer with a deleter,  
> you avoid
> describing the full specialization.
>
> That is the reason why I suggested to reuse the shared_ptr<> astuce in
> scoped_ptr<>.
You might want to check out Jonathan Turkanis' dynamic_move_ptr:
http://home.comcast.net/~jturkanis/move_ptr/
which does this.  It costs an associated size swelling, but can be  
handy if you're willing to pay for it.
Fwiw, here's a poor man's version of that using unique_ptr (or  
Jonathan's static_move_ptr):
typedef unique_ptr<A, void (*)(void*)> PtrType;
Now you can use PtrType with any function pointer.  You just have to  
supply the function pointer in the constructor.  Template aliases  
would make this a little nicer (or a templated wrapper class).  It's  
a compromise between a fully dynamic deleter (like shared_ptr) and a  
fully static deleter (like unique_ptr).  The cost is sizeof(PtrType)  
is two words, but there's no extra internal allocation.
-Howard