今回はテンプレートではなく、単純な判別関数です。これを無理矢理テンプレートにする必然性はまったくありません。CHAR_BITがいくつであっても正しく動作するはずです。
0 1 2 3 4 5 6 7 8 9 10 11 |
inline bool is_little_endian() { int const t = 1; return *reinterpret_cast<unsigned char const*>(&t) == 1; } inline bool is_big_endian() { return !is_little_endian(); } |
なお、上記のテンプレートはリトルエンディアンかビッグエンディアンの処理系においてのみ使用可能です。PDP エンディアンのような特殊な処理系は対象としていません。