今回のテーマは元ネタがよくわからない状態になってしまっています。それはそれとして、当サイトでは独自路線で進むことにします。元ネタにもあるように、バイト逆順にするだけなら簡単なことですので。
| 0 1 2 3 4 5 6 7 8 9 10 | template<class T> T reverse_endian(T value) {   static_assert(std::is_scalar<T>::value, "T must be scalar type.");   unsigned char * first = reinterpret_cast<unsigned  char*>(&value);   unsigned char* last = first + sizeof(T);   std::reverse(first, last);   return value; } | 
コンセプトを使ってもよかったのですが、今回はなるべく古いバージョンのC++でもコンパイルできるようにしました。C++11以降でOKなはずです。それより古いバージョンのC++を使う場合にはstatic_assertの行の削除してください。
制約としては、エンディアンを反転した際に詰め物ビットの位置が上位⇔下位に入れ替わるような場合には対応していません。また、static_assertでもチェックしているように、型Tはスカラ型でなければなりません。






