$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] float_mem_cast
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-05-26 09:53:32
AMDG
Steven Ross wrote:
> There is one function necessary for users to be able to cast their own float
> types.  Should it be in spreadsort.hpp or some separate header file?  It
> seems silly to have a separate header file for it, but I guess it might be
> used on its own.
>
> //Casts a float to the specified integer type
>   template<class Data_type, class Cast_type>
>   inline Cast_type
>   float_mem_cast(const Data_type & data)
>   {
>     //Only cast IEEE floating-point numbers, and only to a same-sized
> integer
>     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);
>     Cast_type result;
>     std::memcpy(&result, &data, sizeof(Cast_type));
>     return result;
>   }
>   
Pu it in a detail namespace.  If others need the same functionality,
we can discuss generalizing it then.
In Christ,
Steven Watanabe