What is the basic usage of std::tr1::aligned_storage ? Can it be used as auto memory for a data type Foo like the one below?
struct Foo{...};
std::tr1::ali
Well, apart from your use of reinterpret_cast
, it looks ok to me. (I'm not 100% sure on the second one).
The problem with reinterpret_cast
is that it makes no guarantees about the result of the cast, only that if you cast the result back to the original type, you get the original value. So there is no guarantee that the result of the cast will contain the same bit pattern, or point to the same address.
As far as I know, a portable solution for casting a pointer x to a type T* is static_cast<T*>(static_cast<void*>(x))
, since static_cast
to and from void*
is guaranteed to turn a pointer to the same address.
But that's only tangentially related to your question. :)