Boost logo

Boost :

From: Greg Colvin (greg_at_[hidden])
Date: 2002-05-02 14:00:03

At 12:25 PM 05/02/2002, you wrote:

>"Greg Colvin" <greg_at_[hidden]> wrote in message
>> >2. shared_ptr has significant size and speed overhead for COM and
>> >CORBA-style smart pointers
>> In my experience, the fastest way to handle COM locally is to do AddRef
>> once when constructing a shared_ptr, and Release once when counter
>> goes to zero, and save the virtual function calls.
>Why do we need smart_ptr if every time I create I need to call AddRef and
>every time I destroy I need to check counter?

You automate the AddRef in a constructor or factory
function, and automate the release with a shared_ptr
deleter function. Then shared_ptr can do a fast local
count to manage copies. Something like:

   void com_releaser(IUnknown* p) { p->Release(); }

   template<class T> shared_ptr<T>
   make_com_shared_ptr(IUnknown* p) {
      return shared_ptr<T> (p,com_releaser);

>> >4. shared_ptr is a point in smart_ptr's design space.
>> It could be, yes. And vice versa.

Actually, they are more like overlapping regions than points.
If you freeze either region, you could then expand the other
region to encompass it. But I agree that is would be easier
for the Loki design to swallow up the Boost shared_ptr design
than vice versa.

So, as, a swallowee, I want to be sure the swallower fully
digests all the swallowed nutrients.

>> Another bastion is years of experience with shared_ptr, which
>> indicates that it is "good enough" for most purposes, that it
>> can be tweaked over time to handle other important purposes,
>> and can provide hooks for user extension in unanticipated
>> ways. The syntax is easy for the most common case, easy
>> enough for anticipated extensions, and well within the skill
>> of those who would design new extensions.
>I assume that if we provide the same syntactic convenience and hooks for
>user extension we do as good as current version.

And the same binary compatibility. Then I will be happy and
shut up, leaving the rest of you to push the boundaries of
template metaprogramming.

>Well-slept last-night, Gennadiy.

Me too. Greg

Boost list run by bdawes at, gregod at, cpdaniel at, john at