How to static assert to disallow “mixed endianness” in a non-templated member function

I suggest asserting that it’s either big or little endian:

[code]#include <bit>
#include <compare>

struct pawned_pw {
std::strong_ordering operator<=>(const pawned_pw& rhs) const {
static_assert(std::endian::native == std::endian::big ||
std::endian::native == std::endian::little,
"mixed-endianess architectures are not supported");

if constexpr (std::endian::native == std::endian::little) {
return …;
} else {
// big
return …;
}
}
};[/code]

Leave a Comment