|
Boost : |
From: Mattias Flodin (flodin_at_[hidden])
Date: 2001-11-13 15:38:18
On Tue, 13 Nov 2001, Mattias Flodin wrote:
> As for the trick in the constructor, it is there to allow constructs such
> as:
>
> class B : public A, public singleton<A> { /* ... */ };
>
> In this case, the 'this' pointer that singleton's ctor receives cannot be
> directly reinterpreted as a B pointer. The code essentially casts the
> number 1 from being a singleton pointer into being a A pointer, in order
> to determine the offset of A in relation to its aggregated singleton.
> Casting 0 does not work because such a cast is guaranteed never to modify
> the pointer, thus I must use 1 for casting and then subtract 1.
My apologies - I have confused A and B here. All references to 'A' in the
text should be 'B'.
-- Mattias Flodin <flodin_at_[hidden]> "A good thing about C++ is that only Room D418 friends can access your private parts" Department of Computing Science Umeå University S-901 87 Umeå, Sweden Note: Any opinions expressed in this mail are personal, and do not necessarily reflect an official standpoint of Umeå University.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk