Boost logo

Boost :

From: David B. Held (dheld_at_[hidden])
Date: 2002-05-02 18:34:42


"Andrei Alexandrescu" <andrewalex_at_[hidden]> wrote in message
news:aas3gb$dkc$1_at_main.gmane.org...
> "David Abrahams" <david.abrahams_at_[hidden]> wrote in message
> news:133a01c1f1c7$00b96320$6401a8c0_at_boostconsulting.com...
> [...]
> > 3. Is using public inheritance at all really important? My impression
> > is that you do this to allow the policies to add interface to the
> > smart_ptr... while at the same time you eschew public member
> > functions.

I just understood what Dave was really saying. Doh!

> Hey, I think it would be a great idea to use private inheritance. That
way,
> policies can enhance interface only through free functions, which is my
> intent anyway. What do others think?

I'm afraid I don't know how it works, now. Consider:

template <typename T>
class MyPolicy
{
protected:
    friend inline void free_function(const MyPolicy& ???);
};

If smart_ptr inherits privately from MyPolicy, there is no way for
free_function() to know that a smart_ptr is really a MyPolicy.
Otherwise, we would need to specify the full pointer type, which
the policy shouldn't know about, should it?

Dave


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