From: David Abrahams (dave_at_[hidden])
Date: 2002-12-04 14:04:53
"Eric Woodruff" <Eric.Woodruff_at_[hidden]> writes:
> "David B. Held" <dheld_at_[hidden]> wrote in message
>> "Eric Woodruff" <Eric.Woodruff_at_[hidden]> wrote in message
>> > [snip]
>> > > holder<Foo> h;
>> > > new (h.storage) Foo;
>> > What is the meaning of that syntax?
>> This is placement new syntax. It means construct a Foo at the address
>> h.storage, without allocating any memory.
> So the type really is of Foo, which has to mean that casting h.storage back
> to a Foo* using reinterpret_cast is covered by the standard.
No, the standard only guarantees that you can do a round-trip
cast. The pointer didn't start out as a Foo*. The fact that it has the
same address as a Foo* doesn't mean anything. Just for example,
something like the following is a perverse but legal reinterpret_cast
if is_pointer<source_type> and is_pointer<dest_type>
-- David Abrahams dave_at_[hidden] * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk