diff --git a/src/base/bitfield.hh b/src/base/bitfield.hh index 30cc952d09..b2f3d6327b 100644 --- a/src/base/bitfield.hh +++ b/src/base/bitfield.hh @@ -232,26 +232,23 @@ replaceBits(T& val, unsigned bit, B bit_val) * @ingroup api_bitfield */ template -std::enable_if_t::value && sizeof(T) != 1, T> +std::enable_if_t, T> reverseBits(T val, size_t size=sizeof(T)) { assert(size <= sizeof(T)); - T output = {}; - for (size_t byte = 0; byte < size; byte++) { - output = (output << 8) | reverseBitsLookUpTable[val & mask(8)]; - val >>= 8; + if constexpr (sizeof(T) == 1) { + return reverseBitsLookUpTable[val]; + } else { + T output = {}; + + for (size_t byte = 0; byte < size; byte++) { + output = (output << 8) | reverseBitsLookUpTable[val & mask(8)]; + val >>= 8; + } + + return output; } - - return output; -} - -template -std::enable_if_t::value && sizeof(T) == 1, T> -reverseBits(T val, size_t size=sizeof(T)) -{ - assert(size == 1); - return reverseBitsLookUpTable[val]; } /**