- #include <iostream> 
-   
- typedef unsigned char byte; 
-   
- #define SYSTEMBYTEORDER 0x3210 
- #define SOMESHITTYBYTEORDER 0x0123 
- #define YETANOTHERBYTEORDER 0x1032 
-   
- template < int b0, int b1, int b2, int b3, int b4 = b0 + 4, int b5 = b1 + 4, int b6 = b2 + 4, int b7 = b3 + 4 > 
- struct ByteOrder { 
-   
-     static int GetInt ( int arf ) { 
-         byte* b = (byte*)&arf; 
-         return b[b0] | ( b[b1] << 8 ) | ( b[b2] << 16 ) | ( b[b3] << 24 ); 
-     } 
-   
- }; 
-   
- template <int order> 
- struct HexByteOrder : 
- public ByteOrder< (order & 0xF), ((order & 0xF0) >> 4), ((order & 0xF00) >> 8), ((order & 0xF000) >> 12) >  
- {}; 
-   
- int main (int argc, char* argv[]) { 
-   
-     std::cout << std::hex; 
-     std::cout << "Argc before: " << argc << std::endl; 
-     std::cout << "Argc with SOMESHITTYBYTEORDER: " << HexByteOrder<SOMESHITTYBYTEORDER>::GetInt( argc ) << std::endl; 
-     std::cout << "Argc with YETANOTHERBYTEORDER: " << HexByteOrder<YETANOTHERBYTEORDER>::GetInt( argc ) << std::endl; 
-     std::cout << "Argc with SYSTEMBYTEORDER: " << HexByteOrder<SYSTEMBYTEORDER>::GetInt( argc ) << std::endl; 
-   
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJ5dGU7CgojZGVmaW5lIFNZU1RFTUJZVEVPUkRFUiAweDMyMTAKI2RlZmluZSBTT01FU0hJVFRZQllURU9SREVSIDB4MDEyMwojZGVmaW5lIFlFVEFOT1RIRVJCWVRFT1JERVIgMHgxMDMyCgp0ZW1wbGF0ZSA8IGludCBiMCwgaW50IGIxLCBpbnQgYjIsIGludCBiMywgaW50IGI0ID0gYjAgKyA0LCBpbnQgYjUgPSBiMSArIDQsIGludCBiNiA9IGIyICsgNCwgaW50IGI3ID0gYjMgKyA0ID4Kc3RydWN0IEJ5dGVPcmRlciB7CiAgICAKICAgIHN0YXRpYyBpbnQgR2V0SW50ICggaW50IGFyZiApIHsKICAgICAgICBieXRlKiBiID0gKGJ5dGUqKSZhcmY7CiAgICAgICAgcmV0dXJuIGJbYjBdIHwgKCBiW2IxXSA8PCA4ICkgfCAoIGJbYjJdIDw8IDE2ICkgfCAoIGJbYjNdIDw8IDI0ICk7CiAgICB9CiAgICAKfTsKCnRlbXBsYXRlIDxpbnQgb3JkZXI+CnN0cnVjdCBIZXhCeXRlT3JkZXIgOgpwdWJsaWMgQnl0ZU9yZGVyPCAob3JkZXIgJiAweEYpLCAoKG9yZGVyICYgMHhGMCkgPj4gNCksICgob3JkZXIgJiAweEYwMCkgPj4gOCksICgob3JkZXIgJiAweEYwMDApID4+IDEyKSA+IAp7fTsKCmludCBtYWluIChpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmhleDsKICAgIHN0ZDo6Y291dCA8PCAiQXJnYyBiZWZvcmU6ICIgPDwgYXJnYyA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIkFyZ2Mgd2l0aCBTT01FU0hJVFRZQllURU9SREVSOiAiIDw8IEhleEJ5dGVPcmRlcjxTT01FU0hJVFRZQllURU9SREVSPjo6R2V0SW50KCBhcmdjICkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJBcmdjIHdpdGggWUVUQU5PVEhFUkJZVEVPUkRFUjogIiA8PCBIZXhCeXRlT3JkZXI8WUVUQU5PVEhFUkJZVEVPUkRFUj46OkdldEludCggYXJnYyApIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiQXJnYyB3aXRoIFNZU1RFTUJZVEVPUkRFUjogIiA8PCBIZXhCeXRlT3JkZXI8U1lTVEVNQllURU9SREVSPjo6R2V0SW50KCBhcmdjICkgPDwgc3RkOjplbmRsOwogICAgCn0=