Boost logo

Boost :

From: Johan Råde (rade_at_[hidden])
Date: 2006-08-04 06:06:08


And here is an implementation of binary_cast,
based on Gennaro Prota's code.

template<class T, class S>
T binary_cast(const S& s)
{
     BOOST_STATIC_ASSERT(sizeof(S) == sizeof(T));
     T t;
     std::copy(
         reinterpret_cast<const volatile char*>(&s),
         reinterpret_cast<const volatile char*>(&s) + sizeof(S),
         reinterpret_cast<volatile char*>(&t)
     );
     return t;
}

I still find it hard to believe that the volatile are needed ;-)
But my experience with different compilers is quite limited.

--Johan Råde


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk