Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-02-16 13:57:18


Ulrich Eckhardt wrote:
> Greetings!
> Firstly, this is not a regression, the behaviour was present in 1.30, too.
> I have attached a simple program that should demonstrate the
> behaviour, but the core is these lines, with foo being derived from
> enable_shared_from_this:
>
> // 1
> std::auto_ptr<foo> g(new foo);
> boost::shared_ptr<foo> f(g);
> // 2
> std::auto_ptr<foo> g(new foo);
> boost::shared_ptr<foo const> f(g);
> // 3
> std::auto_ptr<foo const> g(new foo);
> boost::shared_ptr<foo const> f(g);
>
> In all three cases, I'd expect to be able to call shared_from_this().
> However, only the first two cases really work.

I've now modified the CVS version of shared_ptr to handle these cases. With
the modifications in place, your example now prints:

plain foo
        failed
        const failed

shared_ptr<foo>
        works
        const works

shared_ptr<foo const>
        const works

shared_ptr<foo> from auto_ptr<foo>
        works
        const works

shared_ptr<foo const> from auto_ptr<foo>
        const works

shared_ptr<foo const> from auto_ptr<foo const>
        const works

Thank you for the suggestion. :-)


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