Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2003-02-12 08:56:56


Jon Kalb wrote:
> On 2003-02-11 8:47 PM, "Philippe A. Bouchard" philippeb_at_[hidden]

[...]

> This is as I suspected.
>
> I wonder if it wouldn't be better to have a compile time error in this
> situation rather than to create a trap for the unsuspecting. It does
> put an additional burden on the user to ensure that the types are
> indeed polymorphic, but I think they have that burden in any case.
> The currently implementation allows them to be blissfully ignorant of
> this situation.
>
> I appreciate that your library will document that it only works for
> polymorphic types, but I fear that to be an insufficient prophylactic.

Well in fact, the following assignment could be verified at compile-time
with some smart_ptr<> checking policy:

class A { char c; };

class B { char c; };

class C : public A, public B { char c; };

smart_ptr<C> pC = new C;

smart_ptr<A> pA = pC; // Ok.

smart_ptr<B> pA = new C; // Ok.

smart_ptr<B> pB = pC; // Generate compile-time error.

Philippe A. Bouchard


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