Boost logo

Boost :

From: colin.rafferty_at_[hidden]
Date: 2004-10-20 16:18:38


Peter Dimov wrote:
> Colin Rafferty wrote:

>> Shouldn't the constructor in intrusive_ptr be explicit?

> No, the constructor is implicit by design. Do you have a case where the
> implicit constructor causes problems?

Sure, this is the same problem as for shared_ptr<>.

    extern void foo(const intrusive_ptr<Bar>&);

    void baz()
    {
        Bar* bar = new Bar;
        foo(bar); // oops!
        delete bar;
    }

I thought I was passing a raw pointer into foo(), but I'm actually
creating a temporary intrusive_ptr<Bar>, passing that in, and then
destroying the temporary and the pointer.

-- 
Colin

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