|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-01-20 09:28:40
From: "Andrei Alexandrescu" <andrewalex_at_[hidden]>
> I agree that release() is dangerous. It is also required if you want to
use
> smart pointers with any COM (and, I suspect, CORBA) projects. The typical
> scenario (shown by Rob), is when you need to return a pointer in an out
> parameter. In that case you need to tell your smart pointer you want to
take
> ownership of the pointee away from the smart pointer.
Dunno 'bout CORBA but in COM there's no need for release() (lowercase R.)
Here's why:
template<class T> T * release(com_smart_ptr<T> & p)
{
T * q = p.get();
if(q != 0)
{
q->AddRef();
p.reset();
}
return q;
}
-- Peter Dimov Multi Media Ltd.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk