
On Wed, Jan 14, 2009 at 10:26 AM, Steven Watanabe <watanabesj@gmail.com>wrote:
AMDG Phil Endecott wrote:
It would be good if it were possible to automatically detect whether a floating point type is one for which the cast-to-integer trick works. It would be great if C++ defined some macro or similar that defined whether float and double were IEEE 754 or not. (Hmm, is there some sort of type_traits thing to do this?).
Are you thinking of std::numeric_limits<>::is_iec559?
I've added these static assertions in the casting methods: BOOST_STATIC_ASSERT(sizeof(cast_type) == sizeof(data_type)); BOOST_STATIC_ASSERT(std::numeric_limits<data_type>::is_iec559); BOOST_STATIC_ASSERT(std::numeric_limits<cast_type>::is_integer); That should guarantee I'm casting an IEEE floating-point number to an integer of the same size. Also, using toolset=darwin resolved by bjam issue, and my tests run and pass now. Thanks for your help Steve.