Static assert sizes in ReverseBytesBitcast

This commit is contained in:
Joshua Ashton 2020-08-07 04:12:10 +01:00
parent f7c6f7ad97
commit 5b44d39e9e
1 changed files with 5 additions and 1 deletions

View File

@ -30,7 +30,11 @@ namespace Feather
inline int64_t ReverseBytes(int64_t n) { return int64_t(ReverseBytes(uint64_t(n))); }
template <typename J, typename T>
inline T ReverseBytesBitcast(T n) { return std::bit_cast<T>(ReverseBytes(std::bit_cast<J>(n))); }
inline T ReverseBytesBitcast(T n)
{
static_assert(sizeof(T) == sizeof(J));
return std::bit_cast<T>(ReverseBytes(std::bit_cast<J>(n)));
}
inline float ReverseBytes(float n) { return ReverseBytesBitcast<uint32_t>(n); }
inline double ReverseBytes(double n) { return ReverseBytesBitcast<uint64_t>(n); }