Holding values in their "wire" endianness is common practice in every codebase I've ever worked on.
You say:
"Why would I be holding a vector of big-endian uint16_t data in the first place? There is nothing I can do with this vector except transform its endianness so it becomes useful, or shoot myself in the foot by forgetting about the endianness of the data inside."
However this overlooks two things:
- There's an additional useful thing you can do with the vector, which is write it in the same endianness in which it was sourced- Obtaining a wire-endian vector requires no eager work (since the data was read that way), unlike eagerly endian swapping it