|
|
#1 |
|
|
standard library? |
|
|
#2 |
|
|
> Are there any advantages of using boost::shared_ptr other than auto_ptr from > standard library? There are a number of advantages. First, they're two different beasts: std::auto_ptr transfers ownership so that with some caution you can guarantee that only one pointer points to a particular object at any time, whereas boost::shared_ptr provides reference counting so that many pointers can point to the same object. Second, you cannot put std::auto_ptr's in a standard container, but you can with boost::shared_ptr. Third, although the standard specially provides for calling a destructor on an object of incomplete cl***, not all compilers support that. This problem pops up in e.g. the pimpl idiom. With boost::shared_ptr you replace the direct delete expression in std::auto_ptr with a custom destroy-function that can be defined where the full definition of the cl*** is available, side-stepping the issue. I could list up a fourth and fifth advantage, and perhaps more, but I think that's enough. The main advantage of std::auto_ptr is that it's always there and that it's standard. It should therefore be used when the generality of e.g. boost::shared_ptr is not required. -- 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? |
|
|
#3 |
|
|
P. Steinbach) wrote, >I could list up a fourth and fifth advantage, and perhaps more, but I >think that's enough. The main advantage of std::auto_ptr is that it's >always there and that it's standard. It should therefore be used when >the generality of e.g. boost::shared_ptr is not required. I think that auto_ptr also has less overhead cost than shared_ptr's ownership tracking mechanism when you are doing the simple things it is capable of and have no need for shared ownership. |
|
|
#4 |
|
|
"ctick" <ctick@flare.com> wrote in message
news:g61Bc.6352$OB3.4344@bgtnsc05- > Are there any advantages of using boost::shared_ptr other than auto_ptr from > standard library? You're comparing apples to oranges. |