
I've dealt with (and written) endian utilities for many years, since almost my full career has involved writing software for heterogeneous distributed systems. I definitely think Boost needs a library to ease and simplify byte endian issues. But I'm curious as to the rationale for these endian integer types - I've always written utilities to transform native (or user-defined) types into a serializable binary format - including the option for big-endian, little-endian (or in one project, for "receiver makes right" endianness). I've never had a need for code that performs operations on endian types, other than as "placeholders" for performing I/O with them (whether over a network, or disk I/O). Are there application use cases where the application never transforms into / out of native / UDT's, and always uses these (endian) types instead? Specifically, I've written (templatized generic) utilities that take integers and append them to a character (byte) buffer in a specified endian format (and the converse transformation). (Non-integral types are also supported, with lots of caveats and warnings - floating point type swapping is full of pitfalls, and any endian / byte swapping on a UDT has the expected restrictions - POD single element, no pointers or references, etc.) I would expect these types of utilities to be used in some form of serialization design (e.g. with Boost.Serialization). Anyway, I'm just trying to expand my awareness of various endian related designs. Cliff