On Tue, Apr 5, 2016 at 4:44 PM, Peter Dimov
Gavin Lambert wrote:
Ultimately though it's all just specifying a host-architecture-independent storage format (bit layout) for a given type.
It is, but my main point was that if you have an "endianness" library that gives you
void write_ieee32le( float x, unsigned char * p );
this interface does not change when x is not IEEE 32 bit float.
Boost.Endian and let's call it Boost.BinarySerialization may have similar interfaces, but they are not required to work similarly. Boost.Endian has to convert byte order and doesn't have to deal with portable data representation.
So while it's indeed true that the library no longer does endianness conversion, making another library that is not called "Endian" but has the exact same interface and works in the exact same way as the first one when x is IEEE 32 bit float would be mighty silly.
There is already overlap between different libraries in Boost; there's nothing silly about that. IMHO, stuffing unrelated functionality in a library is much worse.