Boost logo

Boost :

From: David Pierre (david.pierre_at_[hidden])
Date: 2004-09-06 17:05:01


I have got a shared_ptr use case where I use the Deleter to hold some extra
data which I access through get_deleter.

But now I would like to have custom deletion too, by subclassing from the
common part.
Then to access my data, I need get_deleter to work with superclass(es) of the
actual deleter, not only with the exact type.

Here is a simple suggestion to make it possible :

in boost/detail/shared_count.cpp, introduce :

template <class D> struct deleter_caster
{
  void * operator()(std::type_info const & ti, D * del) const
  {
    return ti == typeid(D) : del : 0;
  }
};

and make get_deleter implementation in sp_counted_base_impl as

virtual void * get_deleter(std::type_info const & ti)
{
  return deleter_caster<D>(ti, del);
}

Then I can specialize deleter_caster to my linking.

D. Pierre


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk