Boost logo

Boost Users :

Subject: Re: [Boost-users] shared_ptr as reference argument
From: Igor R (boost.lists_at_[hidden])
Date: 2009-03-19 13:13:58


> Corrected example could be:
>
>
> struct Bar
> {
>
>   explicit Bar(shared_ptr<int> const& data)
>       : data_(data)
>   {}
>
>   ~Bar()
>   {
>       *data_ = 100;
>   }
>
>
> private:
>   shared_ptr<int> const&       data_;
> };
>
>
> //possible misuse
> void foo()
> {
>      shared_ptr<int> ptr = shared_ptr<int>(new int(10));
>      Bar bar(ptr);
>
>      ptr.reset();
>
> } //  BOOM!!! => ptr is destroyed before the Bar::~Bar() is called

Well, the problem here is *storing* a reference - not a passing param
by (const) reference.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net