diff --git a/serializer.hh b/serializer.hh index 03f0650a6d..f26701f9bb 100644 --- a/serializer.hh +++ b/serializer.hh @@ -186,16 +186,16 @@ static_assert(FragmentedView>); using size_type = uint32_t; template +requires std::is_integral_v inline T deserialize_integral(Input& input) { - static_assert(std::is_integral::value, "T should be integral"); T data; input.read(reinterpret_cast(&data), sizeof(T)); return le_to_cpu(data); } template +requires std::is_integral_v inline void serialize_integral(Output& output, T data) { - static_assert(std::is_integral::value, "T should be integral"); data = cpu_to_le(data); output.write(reinterpret_cast(&data), sizeof(T)); } diff --git a/sstables/disk_types.hh b/sstables/disk_types.hh index db30c7b2e4..b10cdecf11 100644 --- a/sstables/disk_types.hh +++ b/sstables/disk_types.hh @@ -61,15 +61,15 @@ struct disk_data_value_view { }; template +requires std::is_integral_v struct disk_array { - static_assert(std::is_integral::value, "Length type must be convertible to integer"); utils::chunked_vector elements; }; // A wrapper struct for integers to be written using variable-length encoding template +requires std::is_integral_v struct vint { - static_assert(std::is_integral_v, "Can only wrap integral types"); T value; }; @@ -80,8 +80,8 @@ struct disk_array_vint_size { }; template +requires std::is_integral_v struct disk_array_ref { - static_assert(std::is_integral::value, "Length type must be convertible to integer"); const utils::chunked_vector& elements; disk_array_ref(const utils::chunked_vector& elements) : elements(elements) {} }; diff --git a/utils/crc.hh b/utils/crc.hh index c4449400fc..ced95592a2 100644 --- a/utils/crc.hh +++ b/utils/crc.hh @@ -157,8 +157,8 @@ public: uint32_t crc32_vpmsum(uint32_t crc, const uint8_t* p, size_t len); template + requires std::is_integral_v void process_le(T in) { - static_assert(std::is_integral::value, "T must be integral type."); #if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ switch (sizeof(T)) { case 1: break; @@ -171,8 +171,8 @@ public: } template + requires std::is_integral_v void process_be(T in) { - static_assert(std::is_integral::value, "T must be integral type."); in = seastar::net::hton(in); _r = crc32_vpmsum(_r, reinterpret_cast(&in), sizeof(T)); } @@ -182,8 +182,8 @@ public: } #else template + requires std::is_integral_v void process_le(T in) { - static_assert(std::is_integral::value, "T must be integral type."); #if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ switch (sizeof(T)) { case 1: break; @@ -196,8 +196,8 @@ public: } template + requires std::is_integral_v void process_be(T in) { - static_assert(std::is_integral::value, "T must be integral type."); in = seastar::net::hton(in); _r = ::crc32(_r, reinterpret_cast(&in), sizeof(T)); }