David Abrahams <[EMAIL PROTECTED]> writes: | Gabriel Dos Reis <[EMAIL PROTECTED]> writes: | | > "David B. Held" <[EMAIL PROTECTED]> writes: | > | > | Does this have any merit whatsoever? | > | | > | template <typename T, typename U> | > | T* dangerous_cast(U* p) | > | { | > | return static_cast<T*>(static_cast<void*>(p)); | > | } | > | > Is it any different from reinterpret_cast<T*>(p) ? | | It might be, depending on your compiler. The behavior of | reinterpret_cast<T*> is implementation-defined.
The mapping used by reinterpret_cast<> is implementation defined, thus an implementation is required to document it. 1) Do you have any corresponding guarantee for converting a void* to T* when the source is *not* a T* nor the address obtained from a T? 2) Isn't the mapping U* -> void* -> T* at best implementation-defined if not undefined behaviour? -- Gaby _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost