|
Boost : |
From: Michael Glassford (glassfordm_at_[hidden])
Date: 2004-05-15 20:44:21
Howard Hinnant wrote:
> thread_specific_ptr<T> is the thread local data storage mechanism of the
> excellent (thanks William!) boost threads library.
> thread_specific_ptr<T> isn't capable of supporting custom deleters for
> good reason.
Actually, the version of thread_specific_ptr<T> that is currently in CVS
(recently moved from the thread_dev branch) does support custom cleanup
functions.
> The deleter function must be a real function (not a
> functor) so as to work well with various OS level threading api's (like
> Posix threads). So the pointer passed into a thread_specific_ptr<T>
> (via reset) must be free-able with delete.
> thread_specific_ptr<T> could offer a custom deleter constrained to be a
> function pointer instead of a more general deleter policy (functor), but
> that seems like it would be of limited functionality and frankly just
> not much fun in a C++ environment.
It does have the limitation of using a real function pointer that takes
a T* and returns nothing.
> However, there is one case where another deleter policy is common enough
> to warrant special attention: delete [].
>
> So I suggest a partial specialization for thread_specific_ptr:
I suppose there could still be a partial specialization such as you
describe that supplies a default deleter that calls delete[] if the user
doesn't supply a custom deleter.
[snip code]
Mike
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk