Write()와 Read()를 템플릿으로 만들면, 여기서 ByteSwapper를 사용하여 엔디언이 서로 다른 런타임 플랫폼의 차이를 감지하고 지원할 수 있다.
template<typename T> void Write(T inData) { // 원시 자료형인지 여부를 컴파일 타임에 검사 static_assert( std::is_arithmetic<T>::value || std::is_enum<T>::value, “Generic Write only supports primitive data types”); if (STREAM_ENDIANNESS == PLATFORM_ENDIANNESS) { Write(&inData, sizeof(inData)); } else { T swappedData = ByteSwap(inData); Write(&swappedData, sizeof(swappedData)); } }