Re: Transfer functionality for shared_ptr
* Carl Barron:
"Alf P. Steinbach" <alfps@start.no> wrote:
In other words, the transferTo() member function seems to be safe and
useful functionality that can only reasonably be implemented by
shared_ptr itself, and is not currently present.
I see no way to implement transferTo() using only the current public
functionality of shared_ptr.
If you create the shared_ptr then its easy
If you don't create it then it's not easy. My article was about the
"not easy" case. The easy case isn't much to remark about.
, Use a custom deleter
with a tunable action such as
struct may_be_delete
{
bool do_it;
may_be_delete():do_it(true){}
void operator () (T *p)
{ if(do_it) delete p;}
};
Yes, I noted that elsewere in reply to Dave Steffen, and gave code using
about the same idea, only a bit more const correct both in operator()
etc. (const correctness for argument to operator() is important because
there are cases where you want to store T const* in a shared_ptr).
now get_deleter<may_be_delete>(p) will return a non const ptr
to the deleter. allowing do_it to be changed to false. The result
is when the shared_ptr's dtor is called nothing is done to the ptr
it contains.
You just showed an example of why get_deleter<>() returns a non const
ptr.:)
No, you have misunderstood.
Completely.
With a non-const get_deleter, and with you the creator of the
shared_ptr, the code above is unnecessary: all you need to do then is to
install a no-op deleter function.
Of course if the deleter is wrong or it is not unique then
the copy approach is all there is.
I'm sorry, that's not meaningful to me.
Cheers, & hth..,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]