|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2002-10-09 11:21:28
"Eric Woodruff" <Eric.Woodruff_at_[hidden]> writes:
> How do you get the notion of it being undefined?
I never said anything was undefined. I said the behavior of
reinterpret_cast was implementation-defined.
> The standard says:
> "7 A pointer to an object can be explicitly converted to a pointer to an
> object of different type."
>
> Then it seems to say that you cannot convert from T* to T2* then back to T*
> and expect it to be defined--but we are not doing that.
You can't count on any particular behavior if you use reinterpret_cast
for anything, unless you read the compiler manual first.
Wow, this seems really difficult to grasp, but I can't understand why.
5.2.10 Reinterpret cast
...
3 The mapping performed by reinterpret_cast is
implementation-defined. [Note: it might, or might not, produce a
^^^^^^^^^^^^^^^^^^^^^^
representation different from the original value. ]
That means it does _something_, but only the compiler vendor and those
who have read the manual know what it does.
-- David Abrahams * Boost Consulting dave_at_[hidden] * http://www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk