元ネタではリトルエンディアンとビッグエンディアンだけでなく、あらゆるバイトオーダーに対応しているようです。ただ、そこまでやっても実用価値はほぼないので、当サイトではリトルエンディアンとビッグエンディアンだけに対応することにします。その代わりといっては何ですが、char文字列だけでなくあらゆる文字型(wchar_t型、char8_t型、char16_t型、char32_t型)に対応させてみました。
0 1 2 3 4 5 6 7 8 |
template <typename T> inline T const* get_endian_name(bool little_endian) { static T const little[] = { 'L', 'i', 't', 't', 'l', 'e', '\0' }; static T const big[] = { 'B', 'i', 'g', '\0' }; return little_endian ? little : big; } |
このやり方は、バイトオーダーに限らず、いろいろな文字列を返す関数を作るのに応用できそうです。