今回のテーマは元ネタがよくわからない状態になってしまっています。それはそれとして、当サイトでは独自路線で進むことにします。元ネタにもあるように、バイト逆順にするだけなら簡単なことですので。

コンセプトを使ってもよかったのですが、今回はなるべく古いバージョンのC++でもコンパイルできるようにしました。C++11以降でOKなはずです。それより古いバージョンのC++を使う場合にはstatic_assertの行の削除してください。

制約としては、エンディアンを反転した際に詰め物ビットの位置が上位⇔下位に入れ替わるような場合には対応していません。また、static_assertでもチェックしているように、型Tはスカラ型でなければなりません。


元ネタ

↑ 9. エンディアンに関するテンプレート