Correct and portable serialization
TODO throw documentation

Throw documentation TODO? E. g. here:

/// \throw TODO


this pointer

Usage of this as in here is unnecessary.

this-&gt;Read(buffer, buffersize);


Calling the method without it is more common.

Read(buffer, buffersize);


endiannes

Endianness systemendianness = General::GetEndianness();


I would speculate that system endianness is not going to change during runtime.

Therefore I would probably use "more constant" representation something like


static const variable
template parameter
maybe even MACRO


read &amp; swap

It doesn't look quite efficient to always read memory and swap if endiannesses don't match. What about having alternative version of Read() method already reversing the order during read?