John Maddock wrote:
The review here should focus on the implementation used, and testing on whatever platforms you have available - in particular are there any circumstances (compiler optimisation settings etc) where this implementation breaks?
Earlier versions of the code had some nonportable casts. These have been removed. There are only two things that can make the current implementation fail: 1. Unsupported floating point formats. The library supports the IEEE formats for float and double and also a number of non-IEEE formats for long double. I will add support for other floating point formats if needed. (The VAX floating point formats are not supported. These are still available on VMS, but the default on VMS is the IEEE formats. Boris Gubenko did not think there was any need to support the VAX formats.) 2. Endianness problems. The header boost/detail/endian.hpp is used (in some cases) to detect endianness. There may be bugs in that header. There may also be some hypothetical situations that that header can not deal with, for instance platforms where endianness can change at runtime, or platforms where integers and floating point numbers have different endianness. Any Boost library that depends on endian.hpp would be affected by that problem. The solution would be to improve endian.hpp. --Johan