$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: williamkempf_at_[hidden]
Date: 2001-10-18 12:52:58
--- In boost_at_y..., "Fernando Cacciola" <fcacciola_at_g...> wrote:
> 
> ----- Original Message -----
> From: David Abrahams <david.abrahams_at_r...>
> To: <boost_at_y...>
> Sent: Thursday, October 18, 2001 12:24 PM
> Subject: Re: [boost] shared_ptr bug?
> 
> 
> > Can we do better with a single-pointer-chained-count design?
> >
> > +-ptr-+     +-count-+     +-target-+
> > |     |     |   |   |     |        |
> > |  *=======>| 1 | *======>|        |
> > |     |     |   |   |     |        |
> > +-----+     +---+---+     +--------+
> >
> I'm not aware of this design. Could you point me to any online 
reference
> that I can look at?
If I understand the picture, what's proposed is going from this:
template<typename T> class shared_ptr {
  // removed for clarity
  T* px;
  long* pn;
};
to this:
template<typename T> class shared_ptr {
  // removed for clarity
  struct count { T* px; long n; }
  count* pc;
};
This may well simplify the implementation, but it would add a level 
of indirection when dereferencing the "pointer".  I suppose some 
tricky casting could eliminate that, but I'm not sure it would be 
portable ( reinterpret_cast<T*>(pc); ).
Bill Kempf